多态的使用场景:1. 拿父引用作为方法的形参,启动方法的方式有n+1种
n : 此父类有多少种子类 1: 父类自己
2. 拿父类型作为方法的返回值类型,返回方法结果时可以有n+1种对象类型返回
3. 拿父类型作为容器的数据类型,容器中的数据类型就可以是n+1种
Object[] objs =newObject[10];ArrayList<Object> list =newArrayList<Object>();
成员内部类(了解)
定义在类中方法外的类叫成员内部类;
格式:publicclassOuter{//成员位置publicclassInner{}}
当一个类成为了另一个类的成员,那么这个类具备类的特点也具备成员的特点
成员内部类中的访问问题:1. 在内部类中访问成员:
a. 可以直接调用外部类的成员变量
b. 可以直接调用自己类的成员变量
c. 如果调用内外部类的同名变量,优先调自己类的 -> 就近原则
d. 如果强制访问外部类成员位置的同名变量 :Outer.this.num
e. 如果直接调用内外部同名方法,优先调用的是内部类的方法
f. 如果强制访问外部类成员位置的同名方法 :Outer.this.方法名(实参);2. 在第三方类中访问内部类成员 :
必须要创建成员内部类的对象:Outer.Inner inner =newOuter().newInner();
静态成员内部类(了解)
定义在类中方法外的类且被static修饰叫静态成员内部类;
格式:publicclassOuter{//成员位置//静态成员内部类publicstaticclassInner{}}
静态成员内部类访问问题:1. 在静态成员内部类中访问成员:static只能访问static!-> 生命周期!static中不可以有this
a. 静态成员内部类中只能访问外部类中静态成员
b. 静态成员内部类中强制访问外部类的同名静态成员时,只需要用外部类的类名.静态成员即可
外部类类名.静态成员;2. 在第三方类中访问静态成员内部类的成员: 还是要现有Inner对象
Outer.Inner inner =newOuter.Inner();
局部内部类(了解)
局部内部类 : 定义在方法内的类
格式:publicclassOuter{//类中成员方法public 返回值类型 方法名(形参){int num =10;//局部内部类classInner{}}}
成员内部类中的访问问题:1. 在内部类中访问成员:
a. 可以直接调用外部类的成员变量
b. 可以直接调用自己类的成员变量
c. 如果调用内外部类的同名变量,优先调自己类的 -> 就近原则
d. 如果强制访问外部类成员位置的同名变量 :Outer.this.num
e. 如果直接调用内外部同名方法,优先调用的是内部类的方法
f. 如果强制访问外部类成员位置的同名方法 :Outer.this.方法名(实参);2. 在第三方类中访问内部类成员 :
必须要创建成员内部类的对象:Outer.Inner inner =newOuter().newInner();