多态调用的三种格式
* A:多态的定义格式:
* 就是父类的引用变量指向子类对象
父类类型 变量名 = new 子类类型();
变量名.方法名();
* B: 普通类多态定义的格式
父类 变量名 = new 子类();
* C: 抽象类多态定义格式
抽象类 变量名 = new 抽象类子类();
;
* D: 接口多态定义的格式
接口 变量名 = new 接口实现类();
成员方法:编译看左边 运行看右边(父类有子类没有 调用父类 父类 有 子类有 调子类) f.show();
成员变量:编译运行都看 左边 int a = f.num; 父类中的num
* E: 注意事项
同一个父类的方法会被不同的子类重写。在调用方法时,调用的为各个子类重写后的方法。
12 instanceof关键字
* A: 作用
可以通过instanceof关键字来判断某个对象是否属于某种数据类型。如学生的对象属于学生类,学生的对象也属于人类
boolean b=a inatanceof b// 前子后父 true
测试的时候前父后子
多态-向下转型
* A: 向下转型:一个已经向上转型的子类对象可以使用强制类型转换的格式,将父类引用转为子类引用,这个过程是向下转型。如果是直接创建父类对象,是无法向下转型的!
使用格式:
子类类型 变量名 = (子类类型) 父类类型的变量;
如:Student stu = (Student) p; //变量p 实际上指向Student对象
package cn.lijun.demo2;
public abstract class Fu {
public abstract void method();
}
package cn.lijun.demo2;
public class Zi extends Fu{
public void method() {
System.out.println("我是子类的方法");
}
}
package cn.lijun.demo2;
public class Text {
public static void main(String[] args) {
Fu f = new Zi();
f.method();
}
}