week03周记(一)
迟来的总结
一、抽象类
抽象类是包含抽象方法的类
抽象类、抽象方法用关键字abstract表示
抽象方法是只有声明而没有方法体的方法。
抽象类的子类必须重写父类当中所有的抽象方法,否则该子类也必须声明为一个抽象类。
抽象类的格式
public abstract class AbstractDemo{//一个类名为AbstractDemo的抽象类public abstract void run();//这是一个方法名为run的抽象方法
}
抽象类的使用
public abstract class AbstractDemo{public abstract void run();//
}
public class AbstractSubclass extends AbstractDemo{@Override//重写在JDK1.5之后可以省略不写public void run(){System.out.println("飞奔");
}}
抽象类的重点:
1.抽象类不能创建对象,如果创建对象,编译无法通过。
2.抽象类中,可以有构造方法,是供子类创建对象是,初始化父类成员使用的。
3.抽象类中,不一定包含抽象方法,但是包含抽象方法的类一定是抽象类。
4.抽象类的子类,必须重写父类中的所有抽象方法,否则编译器无法通过,除非该子类也是抽象类。
二、接口
接口是一种引用类型,是方法的集合,如果说类的内部封装了成员变量、构造方法、成员方法,那么接口的内部主要就是封装了方法,包含了抽象方法(JDK1.7及以前),默认方法和静态方法(JDK1.8),私有方法(JDK1.9)
特点:
1.接口中无法定义成员变量,但是可以定义常量,因为值不可变,默认使用 public static final 修饰。
2.接口中没有构造方法,不能创建对象。
3.接口中没有静态代码块
接口的好处:
1.定义规则
2.降低耦合性【高内聚、低耦合】
3.扩展原有类的功能
接口的定义格式:
public interface InterfaceDemo{//常量public static final int i = 1;//抽象方法public abstract void method();//默认方法public void method1();//静态方法public static void method2();
}
接口的实现
public interface InterfaceDemo{//常量public static final int i = 1;//抽象方法public abstract void method();//默认方法public default void method1(){System.out.println("这是InterfaceDemo的method1方法");}public default void method12(){System.out.println("这是InterfaceDemo的method12方法");}//静态方法public static void method2(){System.out.println("这是一个静态方法只能通过接口名来调用");
}
}public class Interfaceimplement implements InterfaceDemo{@Overridepublic void method(){System.out.println("这是method方法");
}@Overridepublic default void method12(){System.out.println("这是Interfaceimplement的method12方法");}
}public class Test{Interfaceimplement inter = new Interfaceimplement();inter.method;inter.method1;inter.method12;InterfaceDemo.method2;
}
接口的多实现
在继承体系中,一个类只能直接继承一个父类。但是对于接口来说,一个类可以实现多个接口,这叫做接口的【多实现】。并且,一个类能继承一个父类的同时还能实现多个接口。
实现格式:
public class ClassName extends 父类 implements 接口1,接口2,.....{//重写接口中的所有的抽象方法//重写接口中的默认的方法【可选】//抽象方法重名
}
对于多实现中的抽象方法,实现类必须重写所有的抽象方法,如果抽象方法有重名的,只需要重写一次即可。
对于多实现中的默认方法,实现类都可以继承使用,如果默认方法有重名的,【必须重写一次】。
接口中,如果存在同名的静态方法并不会冲突,原因是只能通过各自的接口名访问静态方法。当一个类既继承了一个父类,又同时实现了多个接口,父类中的成员方法与接口当中的默认方法重名,【子类就近选择父类的成员方法】
提示: 子接口重写默认方法,default关键字保留.
三、接口与抽象类的区别
相同点:
1.都包含抽象方法、子类都必须重写这些抽象方法
2.都不能直接实例化对象
3.都位于继承的顶端,用于被其他类实现或者继承
区别:
1.抽象类里面可以包含普通成员方法,接口不能包含普通成员方法
2.一个类只能直接继承一个父类(可是是抽象类),一个类也可以实现多个接口。
3.类与类之间只能单继承关系,接口与接口之间可以多继承
4.抽象类可以定义普通的成员变量和常量,接口只能定义常量 public static final 修饰的。
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
