一、inheritance继承
~在java中只能是单继承,不能有多继承;即一个类可以有多个子类,但是只能有一个父类。
1.extends表继承,格式:public class 子类名 extends 父类名{}
2.关键字 super
(1)super指向父类。~类似于this,而this指向对象本身
(2)super的两种用途:①调用父类的构造函数;(∵父类的构造方法不会被子类继承,∴子类只能使用super调用父类的构造函数。且super()或super(参数)只能出现在子类构造函数的第一行;如果没有显示调用,程序会自动在子类构造函数第一行加上super();)
②调用父类的方法。
3.Constructor chaining:就是在构造一个子类的对象时,会调用沿着继承链的所有父类的构造方法。构造函数调用顺序:自己的构造函数->父类的构造函数->父类的父类的构造函数->……(依次往上调用)。
4.overriding重写
(1)子类在自己的类中修改父类的方法。注意:写“@Override”
私有方法不会被覆盖。
————(2)overriding重写 v.s. overloading重载————
①重载是指使用相同的名字但不同的参数列表;重写具有相同的签名和返回值类型。
②方法重写发生在通过继承而相关的不同类中;方法重载可以发生在同一个类中,也可以发生在由于继承而相关的不同类中。
(3)对象.toString()返回格式:对象的类名@表示对象的数字;常需重写。
二、polymorphism多态
1.polymorphism就是supertype(父类型)的变量可以引用subtype的对象。subtype的对象也是supertype的对象,但是supertype的对象不是subtype的对象。
2.dynamic binding:方法可以在沿着继承链的多个类中实现,而具体调用哪个方法由对象的actual type决定。
(1)e.g. SimpleObject poly=new CircleFromSimpleObject(0.8);
poly.toString();
中poly的declared type是SimpleObject,而actual type是CircleFromSimpleObject.所以调用的是CircleFromSimpleObject类的toString方法。
——————(2)method matching v.s. binding———————
方法匹配:编译器在编译时根据参数的类型、参数的个数、参数的顺序决定调用哪一个方法,这是由引用变量的声明类型决定的;方法绑定是指方法在几个子类中都可以被执行,JVM在运行时动态绑定方法的执行,这是由变量的实际类型决定的。
3.转化对象:
(1)可以用casting操作符将一个类对象转化成跟这个类有继承关系的类的对象。
“对象名 instanceof 类名”用于判断该对象(看该对象的实际类型)是不是该类的对象。
——————————4.ArrayList类————————————
【注意】L大写!!!!!!!!
(1)ArrayList可以用于创建不限制长度的数组,格式:
import java.util.ArrayList;
ArrayList<类型>数组名=new ArrayList<>();
(2)ArrayList中的方法:
【注意】Array中返回长度的方法是length;而ArrayList返回长度的方法是size();
(3)ArrayList中的元素必须是对象,不能是基本数据类型;但是,可以使用包装类将基本数据类型转化为对象,再放到ArrayList中。
(4)Array v.s. ArrayList
5. 修饰符的访问权限:
(1)protected限定方法只能在同一个包中的类或不同包中的子类访问。
(2)package-private/package-access:如果没有可见性修饰符,则默认可以被同一个包中的所有类访问。
整理不易,亲亲点个赞呗~~