来源-微信公众号:soqivijw
![]()
下雨都怕淋,可是有的雨大家都喜欢淋,为什么?(答案在文末)
——趣味拓展
语法格式
[修饰符列表] abstract class 类名{ 类体;}
//抽象方法不能有方法体 {},即不能new实现public abstract void eat();
抽象类是存在构造函数的,其构造函数是提供给子类创建对象的时候初始化父类的属性的。
抽象方法就是没有实现的方法 (父类方法如果具有不确定性,我们可以考虑将其设计为abstract),
所谓没有实现就是没有方法体
一个类中存在抽象方法,那么这个类必须声明为抽象类
抽象类可以没有抽象方法,抽象方法一定在抽象类中
abstract只能修饰抽象类和抽象方法
抽象类还是类!可以有任意成员
如果一个类继承了抽象类,则必须实现抽象类中的所有抽象方法,或者它也声明为抽象类
//~比如abstract class Animal{public abstract void fly();}/* oneabstract class bird extends Animal{
}*/// twoclass Brid extends Animal{@Override public void fly() { }}
抽象方法不能使用private、final和static(和重写无关)关键字修饰,很明显这是违背abstract的初衷的
语法格式
[修饰符列表] interface 接口名{}{
}class 类名 implements 接口{
}
like-a (继承是is-a)符合标准的可以考虑设计为接口
接口是完全抽象的。(抽象类是半抽象)也可以说接口是特殊的抽象类。
语法格式:[修饰符列表] interface 接口名{}
抽象类实现接口的话,可以不实现接口中的方法
接口支持多继承,一个接口可以继承多个接口,担任各自功能,解耦性强--比如电脑同时有多个USB接口,来分担不同的功能
接口也是一种“引用数据类型”,编译之后是一class字节码文件。
接口中主要包含两部分内容,一部分是:常量。一部分是:抽象方法。在JDK8之后接口类可以有静态方法,默认方法,也就是说接口可以有方法的具体实现,但是需要加default关键字修饰

接口中所有的元素都是public修饰的。在下面案例可以看到-->冗余
接口中的抽象方法定义时:public abstract修饰符可以省略

接口中常量的public static final也是可以省略的
(即写一个数据类型就会默认加上public static final)

牢牢记住哈-->一个细节几小时沉默
答案-->淋浴