目录
1.3.3 抽象方法不能被final和static修饰,因为抽象方法要被子类重写
1.3.4 抽象类必须被继承,并且继承后子类要重写父类中的抽象方法,否则子类也是抽象类,必须要使用 abstract 修饰
1.3.5 抽象类中不一定包含抽象方法,但是有抽象方法的类一定是抽象类
1.3.6 抽象类中可以有构造方法,供子类创建对象时,初始化父类的成员变量
2.3.2 接口当中只能存在抽象方法,除了被 static 或 default 修饰的方法
2.3.3 接口当中的抽象方法默认都是public abstract 修饰的
2.3.4 接口中的成员变量默认都是public static final修饰的
2.3.6 类和接口之间的关系可以使用 implements 来
2.3.8 如果类没有实现接口中的所有的抽象方法,则类必须设置为抽象类
2.3.9 jdk8中:接口中还可以包含default方法。
一、抽象类
1.1 抽象类的概念
在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描
绘对象的。
如果
一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类
比如

在打印图形例子中,
我们发现
,
父类
Shape
中的
draw
方法好像并没有什么实际工作
,
主要的绘制图
形都是由
Shape的各种子类的 draw
方法来完成的
.
像这种没有实际工作的方法
,
我们可以把它设计成一个
抽象方法
(abstract
method)
,
包含抽象方法
的类我们称为
抽象类
(abstract class)
1.2 抽象类语法
在
Java
中,一个类如果被
abstract
修饰称为抽象类,抽象类中被
abstract
修饰的方法称为抽象方
法,抽象方法不用给出具体的实现体。
abstract public class Shape {
abstract void draw();
}
注意:抽象类也是类,内部可以包含普通方法和属性,甚至构造方法
1.3 抽象类特性
1.3.1 抽象类不能实例化对象
1.3.2 抽象方法不能是被private修饰的
1.3.3 抽象方法不能被final和static修饰,因为抽象方法要被子类重写
1.3.4 抽象类必须被继承,并且继承后子类要重写父类中的抽象方法,否则子类也是抽象类,必须要使用 abstract 修饰
1.3.5 抽象类中不一定包含抽象方法,但是有抽象方法的类一定是抽象类
1.3.6 抽象类中可以有构造方法,供子类创建对象时,初始化父类的成员变量
1.4 抽象类的作用
使用抽象类相当于多了一重编译器的校验
使用抽象类的场景就如上面的代码
,
实际工作不应该由父类完成
,
而应由子类完成
.
那么此时如果不小心误用成父类了,
使用普通类编译器是不会报错的.
但是父类是抽象类就会在实例化的时候提示错误, 让我们尽早发现问题
.
二、接口
2.1 接口的概念
在现实生活中,接口的例子比比皆是


电脑的
USB
口上,可以插:
U
盘、鼠标、键盘
...
所有符合
USB
协议的设备
电源插座插孔上,可以插:电脑、电视机、电饭煲
...
所有符合规范的设备
可以看出:
接口就是公共的行为规范标准,大家在实现时,只要符合规范标准,就可以通用
。
在
Java
中,接口可以看成是:多个类的公共规范,是一种引用数据类型。
2.2 语法规则
接口的定义格式与定义类的格式基本相同,将
class
关键字换成 interface关键字
publicinterface接口名称{
//抽象方法
publicabstractvoidmethod1(); //public abstract是固定搭配,可以不写
publicvoidmethod2();
abstractvoidmethod3();
voidmethod4();
//注意:在接口中上述写法都是抽象方法,跟推荐方式4,代码更简洁
}
1.
创建接口时
,
接口的命名一般以大写字母 I 开头(非硬性)
2. 接口的命名一般使用
"
形容词
"
词性的单词
.(非硬性)
3.阿里编码规范中约定
,
接口中的方法和属性不要加任何修饰符号
,
保持代码的简洁性
.(非硬性)