对象的转型
1. 对象的向上转型
2. 对象的向下转型
本节学语法, 应用在以后 !!!
1. 对象的向上转型
实例:电脑(父类)
笔记本电脑(子类) -- 我正在使用的笔记本电脑(子类的对象)
我正在使用的笔记本电脑 是 电脑 (将子类对象赋值给父类的引用)
代码:Student 是 Person 的子类
Student s = new Student(); //张三是一个学生
Person p = s ; //张三同学是个人
1 class Person{ 2 int age ; 3 String name ; 4 void introduce(){ 5 System.out.println("我的名字是" + this.name + ",我的年龄是" + this.age); 6 } 7 }
1 class Student extends Person{ 2 String address ; 3 4 void study(){ 5 System.out.println("我正在学习"); 6 } 7 8 void introduce(){ 9 super.introduce(); 10 System.out.println("我的家在" + this.address); 11 } 12 }
1 class Test{ 2 public static void main(String args []){ 3 Student student = new Student(); 4 Person person = student ; 5 6 person.name = "张三"; 7 person.age = 10 ; 8 person.address = "北京" ; 9 } 10 }
Tips: 一个引用能够调用哪些成员 (变量和函数) , 取决于这个引用的类型
person类型是Person类, Person类是没有address变量的
person作为一个人的时候, 调用作为Student的属性(比如考试之类的)是不正确的, 因为不是所有人都会考试的
1 class Test{ 2 public static void main(String args []){ 3 Student student = new Student(); 4 Person person = student ; 5 6 person.name = "张三"; 7 person.age = 10 ; 8 //person.address = "北京" ; 9 person.introduce(); 10 } 11 }
Tips: 一个引用够调哪一个方法,取决于这个引用所指的对象
person.introduce()根据打印内容可看出调用的是子类中的introduce();
Student student = new Student();
Person person = student ;
person 所指的对象是student , 是子类Student的, 故会调用其introduce();
2. 对象的向下转型
先向上转型, 再强制转型为 向下Student 转型