抽象的概念:
用abstract修饰的类就是抽象类。如果某个类中包含有抽象方法,那么该类就必须定义成抽象类。
抽象类可以有成员属性和非抽象的成员方法。
抽象类不能被实例化,但可以有构造函数。
抽象类只能用作基类,表示的是一种继承关系。继承抽象类的非抽象类必须实现其中的所有抽象方法,而已实现方法的参数、返回值要和抽象类中的方法一样。否则,该类也必须声明为抽象类。
注意事项:
抽象类可以有构造方法,但不能直接实例化,只能用来继承;
抽象类的派生子类应该提供对其所有抽象方法的具体实现;如果抽象类的派生子类没有实现其中的所有抽象方法,那么该派生子类仍然是抽象类,只能用于继承,而不能实例化;
抽象类中也可以包含有非抽象的方法,子类中重写非抽象方法时返回值和参数必须与父类一致;
构造方法和静态方法不可以修饰为abstract
多态参数:方法的形式参数类型是父类类型,而传递的实际参数可以是任意子类的对象(提高代码的扩展性)
多态环境下:1.对成员方法的调用(编译看左边,运行看右边);2.对静态方法的调用(编译,运行都看左边)3.对成员变量的调用(编译,运行都看左边)
多态环境下对子类,父类的方法调用:1.向上造型(只能调用父类中的方法)2.子类,父类方法都可以调用
接口的定义:接口就是特殊的抽象类,即所有方法都是抽象方法的抽象类就是Java中的接口;
特点:接口是一种特殊的抽象类
接口中没有变量,只能有public static final修饰的静态常量。三个修饰符可以省略。
接口中所有方法都是抽象方法,且默认就是public权限。
Java接口继承接口的原则: Java接口可以继承多个接口
接口继承接口依然使用关键字extends,不要错用成implements
Java类的继承是单一继承,Java接口的继承是多重继承。
抽象类与接口的区别: