目录
1 抽象类
1.1抽象类的概念
在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果 一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。
1.2抽象类的语法
在Java中,一个类如果被 abstract 修饰称为抽象类,抽象类中被 abstract 修饰的方法称为抽象方法,抽象方法不用 给出具体的实现体。
1.3抽象类的特性
1 抽象类是不能直接实例化对象
2.抽象类虽然不可以被实例化,但是可以被继承【也就是说抽象类其实就是为了被继承】
3.当一个普通类继承这个抽象类的之后,如果这个抽象类中包含抽象方法,那么需要重写这个抽象方法,否则不能通过编译。
4.如果一个抽象类A继承了另一个抽象类B,那么此时这个抽象类A可以不用重写抽象类B里面的抽象方法。
5.抽象方法是不能被private,static,final修饰的。
6. 抽象类中不一定包含抽象方法,但是有抽象方法的类一定是抽象类
7. 抽象类中可以有构造方法,供子类创建对象时,初始化父类的成员变量
1.4抽象类的作用
抽象类本身不能被实例化, 要想使用, 只能创建该抽象类的子类. 然后让子类重写抽象类中的抽象方法.使用抽象类的场景就如上面的代码, 实际工作不应该由父类完成, 而应由子类完成. 那么此时如果不小心误用成父类了, 使用普通类编译器是不会报错的. 但是父类是抽象类就会在实例化的时候提示错误, 让我们尽早发现问题.
2.接口
2.1接口的概念
在现实生活中,接口的例子比比皆是,比如:笔记本上的USB口,电源插座等。
电脑的USB口上,可以插:U盘、鼠标、键盘...所有符合USB协议的设备
电源插座插孔上,可以插:电脑、电视机、电饭煲...所有符合规范的设备
通过上述例子可以看出:接口就是公共的行为规范标准,大家在实现时,只要符合规范标准,就可以通用。 在Java中,接口可以看成是:多个类的公共规范,是一种引用数据类型。
2.2语法规则
接口的定义格式与定义类的格式基本相同,将class关键字换成 interface 关键字,就定义了一个接口。
提示:
1. 创建接口时, 接口的命名一般以大写字母 I 开头.
2. 接口的命名一般使用 "形容词" 词性的单词.
3. 阿里编码规范中约定, 接口中的方法和属性不要加任何修饰符号, 保持代码的简洁性.
2.3接口的特性
1.接口中的成员变量默认都是 public static final修饰的。
2.接口当中的成员方法,默认都是public avstract修饰的。
3.接口当中的普通成员方法是不能有具体实现的,如果要有具体实现,必须加上default修饰
【从JDK8开始才有】
4.接口当中可以有静态的成员方法,但不管是静态的成员方法还default方法都是有public修饰的.
5.接口也是不可以实例化的.
6.类和接口的关系是使用 implements 实现的,并且要重写接口里的抽象方法。
7.一个接口可以引用具体实现类的【向上转型】
结果:
8.借楼当中不能有静态,实例代码块,构造方法。
9.一个抽象类实现一个接口,可以不重写这个抽象方法【如果在继承这个抽象方法,该接口的类还要被重写】
2.4接口的使用
2.5实现多接口
因为不是所有的动物都会跑或者飞所以我们给飞和跑定义了两个接口,谁有需要就拿去实现。
这里可以看出一个类可以实现多个接口这就使得我们的工作效率得到大大提升!
这里就是实现上述代码,同时我们可以看到接口也是可以实多态!
注意:一个类实现多个接口时,每个接口中的抽象方法都要实现,否则类必须设置为抽象类。
2.6接口间的继承
在Java中,类和类之间是单继承的,一个类可以实现多个接口,接口与接口之间可以多继承。即:用接口可以达到 多继承的目的。 接口可以继承一个接口, 达到复用的效果. 使用 extends 关键字.
但是如果有类实现IC接口的话IC接口中的抽象方法与被IC继承的接口里的抽象方法都要被重写!