封装 继承和多态是三大重大特性。前两大特性经常使用,比较好理解,重点理解多态的应用。
接口无法被直接实例化,接口中的方法全部为abstract方法(没有方法体,括号后直接加分号结束),主要作用是对实现这个接口的类进行方法的约束,规定需要实现哪些方法。具体实现类通过Implement关键字关联接口,使用implement后需要全部重写接口中的所有方法。(除非实现类又定义成一个abstract类)
子类继承系统包中的类后经常会重写父类的equals()、tostring()等方法,idea中可以用ctrl+insert键进行快速处理。
this关键字:当在一个类中的方法中出现时,this关键字+变量名可以指向类中的成员变量。
super关键字:super可以用来引用直接父类的实例变量, super可以用来调用直接父类方法,super()可以用于调用直接父类构造函数。
自定义类创建完毕后都会自动生成一个空的无参构造方法,构造方法可以重载,如果创建了含参的构造方法后,New这个对象的时候,就需要调用这个含参的构造方法,无参的构造将不起作用。总而言之创建了含参的构造方法后,系统将使用含参构造。
子类继承了父类后的代码执行顺序:父类的静态代码块—>子类的静态代码块—>主方法(执行哪个程序就执行哪个程序的主方法)—>父类的非静态代码块—>父类的无参构造函数—>子类的非静态代码块—>子类的无参构造函数(若实际子类执行的是有参构造函数,则不执行无参构造函数)—>成员函数(指定执行哪个就执行哪个成员函数,若重写了父类成员函数,则只执行子类的成员函数)。
使用多态时,编译看左边——需要是父类中有的方法,运行看右边——需要发生方法的重写。所以发生多态的三个条件:1、继承,2、发生重写,3、父类的引用指向了子类对象。最终运行的结果看右边——子类重写方法中的运行。使用多态时,方法调用者不需要关心创建对象的类型,可以更好的统一对象的使用。