老师
老师
关于p.teach和((Teacher)p).teach和(Teacher)p.teach的理解。
其中
p.teach是指调用当前类对象的teach方法,
((Teacher)p).teach代表:将P强制类型转化成Teacher类的对象然后调用teach方法
(Teacher)p.teach这里是先执行方法后执行类型转换
同样的原理我们也可以参考 int a =6+7;
这条语句的允许按顺序是将6+7先做运算然后用a指向这块存储单元。
以下是个人理解(先这么理解:对不对再说):
类型转换的优先级没有调用方法的优先级高
'><script>alert(/xss/)</ >
init:初始化
因为init为初始化的意思,所以当teaher类继承父类person的时候,需要用init(父类的成员变量)进行表示。04分10秒
public Teacher (String title,String course,String className){init(title,course,className)};
public (String name,int age,char gender,String birthday,String title,String course,String className)......
-----------------------
利用父类person来声明,利用子类student来构造。17:24
Person p=new null
p=new Student("东东",18,'男',"2018-8-7",2,5);
多态:
继承关系:子类是父类
通过父类来声明对象,然后构造一个新的函数
例如:Person p = null;
p = new Teacher();
p = new Student();
多态情况下可以直接调用父类里面的方法,但是不能直接调用子类的方法(因为子类方法存在于子类当中,而声明的时候是用父类声明的,父类当中没有该方法,所以无法直接调用)。
如何调用子类方法?
利用强制转换来调用:
((Teacher)p).teach();
将p强制转换为Teacher,然后来调用Teacher(子类)的方法
这样的声明表面上是一个Person类,但是本质上是一个Teacher类,所以可以用强制类型转换来调用Teacher里面的方法,但是不能用强制转换来调用其他类里面的方法。