类的派生、多态、抽象类、接口
1:派生-extends
派生就是继承已有类非私有的字段和方法等创建新的类,还可以添加、重写字段和方法;
在类的派生中,构造函数不可以被继承;
派生源的类-父类/基类/超类;派生的类-子类/派生类;
2:super(…)调用超类的构造函数,在子类构造函数的开头;
super(…)和this(…)不能同时存在构造函数中,因为都必须在开始调用;
3:子类的构造函数中如果无显示调用超类构造函数,则会自动调用超类中的“不接收参数的构造函数”;
X(……){super();}
4:在类中最好显性编写“不接收参数的构造函数”;
虽然类会默认一个不接收参数的构造函数,但一旦定义带参数的构造函数,就不会默认,需要手工创建;
避免子类未定义构造函数出错--第3点
5:超类和子类
6:超类和子类的实例引用
向上引用仅会执行子类继承父类的 功能或重写 部分,向上引用无法调用子类独有的功能;
如下图2部分
7:多态-派生类的价值
重写(override)-重写定义一个与超类中的方法签名一样的方法。让超类方法无效。如果要调用使用supper.方法名显示调用
引用类型转型
向上转型-超类类型的变量引用子类实例
向下转型-显示进行类型转型,比较常用的是对Object向下转型(类型)object;
8:注解[email protected](编译器可以读懂的注释)
告知程序重写超类的方法,而不是重写添加新的方法,避免出错
格式:@Override 方法名称
9:继承和访问权限
成员(字段、方法、类、接口)可以被继承,私有成员、实例初始化器、静态初始化器、构造函数不会被继承;
final类不能派生,final方法不能被重写;
当重写方法时,必须赋给与超类中方法相同或小于的访问权限修饰符
不可以将超类的类方法重写为实例方法
10:修饰符顺序
11:抽象类
无法创建或者不应该创建实例;
无法定义方法的主体。其内容应该在子类实现;
12:抽象类和方法定义
abstract 类名{};
abstract 方法名();;
13:抽象类中可以包含非抽象方法(抽象类的超类也是Object,Object类中有非抽象方法例如toString),但包含抽象方法的类一定是抽象类;
子类继承抽象类,要么实现抽象类全部方法,要么子类也是抽象类;
抽象类的非抽象方法重写为抽象方法比如toString方法
14:文档注释和javaDoc-这部分网上搜索即可
15:接口-接口是引用类型的一种
接口声明:interface
接口所有方法都是public且abstract
接口实现:implements,接口实现的方法必须是public修饰符;接口类型的变量可以引用实现类的实例
接口实现类必须实现接口所有的方法,否则实现类定义为抽象类;
接口可以持有常量---public\static\final字段,即为不可更改的数值的类变量
接口本身的访问修饰符与类相同-可以加public修饰符
当类声明同时存在extends 和 implements一定要先写extends,一个类可以实现多个接口
接口也可以进行派生新的接口
原文地址:https://www.cnblogs.com/sun-null/p/12287163.html