抽象类、接口
一、掌握抽象类和抽象方法**
关键字 : abstract
抽象类特点:
1、被abstract关键字修饰。
public abstract class 类名{
}
2、抽象类无法创建对象,但是可以通过匿名内部类(他的一个匿名子类)形式委婉创建。
Motor motor = new Motor() {
// 子类中才能重写父类方法
@Override
public double calRent(int day) {
return 0;
}
}
3、抽象类虽然无法创建对象,但是依然可以有构造方法,同样也依然可以作为子类对象的引用构造方法,照样拥有,是为子类提供的。
Moto motor = new Bus();
4、有抽象方法的类一定是抽象类,但是抽象类不一定有抽象方法。
5、子类继承父类之后,一定要重写父类的所有抽象方法,
如果不重写,子类也必须是抽象类。
6、抽象方法没有方法体,被abstract关键字修饰。
二、理解接口的作用和含义
作用参见代码:
接口(生活中的接口/物理接口…):
USB接口 电源接口、 网线接口…
接口(系统功能接口):
API(应用程序接口)文档(java中的那些类和方法就统称为API)。
接口(java的接口 interface):
java是单根继承 ,无法实现多继承情况,
has a 关系
public interface MyInterface {
}
final(常量)关键字:(注意事项)
1、被final修饰的属性,就成了常量,常量只能被也必须赋一次值,后续无法在更改。
2、被final修饰的类,无法被继承,
3、被final修饰的方法,无法被子类重写
引用数据类型:接口(和抽象类一样,没有办法实例化)
1、接口里的全部都是 public adstract修饰(默认)的抽象方法
2、接口里的属性 全部都是public static final修饰(默认)的静态常量。
关键字interface(接口) implements(实现)
接口特性:
1、接口不可以被实例化(创建对象),但可以作为子类对象的引用(多态)
2、实现类必须实现接口的所有方法
3、实现类可以实现多个接口
implements,多个接口使用逗号隔开
4、接口中变量都是静态常量(public static final )
接口的方法,必须被子类全部重写。原因:抽象类都如此,更何况全是 抽象方法的接口了。
5、接口和接口之间也可以使用继承。
java中只允许单根继承(extends)比喻<你只有一个亲爹>
但是它允许多是实现(implements)比喻<但可以有多个干爹>
规范:
在进行继承和实现的时候,推荐先写继承,然后在写实现接口