对象的向上转型
什么是向上转型
向上转型——将子类的对象赋值给父类的引用:
Student s = new Student();
Person p = s;
class Student extends Person{
String address;
void introduce(){
super.introduce();
System.out.println("我的家在"+address);
}
void study(){
System.out.println("我在学习");
}
}
class Person{
String name;
int age;
void introduce(){
System.out.println("我的姓名是"+name+",我的年龄是"+age);
}
}
一个引用能够调用哪些成员(变量和函数),取决于这个引用的类型
一个引用调用的是哪一个方法,取决于这个引用所指向的对象
class Test{
public static void main(String args[]){
Student s = new Student();
Person p = s;//要求为继承关系
//或者这样写:
//Person p = new Student();
//一个引用能够调用哪些成员(变量和函数),取决于这个引用的类型
p.name = "张三";
p.age = 20;
//p.address = "北京";//报错,提示找不到此符号
p.introduce();//调用的Student的introduce()
//p.study();//报错,提示找不到符号
}
}
对象的向下转型
什么是向下转型
向下转型——将父类的对象赋值给子类的引用
向下转型的前提是向上转型
Student s1 = new Student();
Person p = s1;
Student s2 = (Student)p;
class Test{
public static void main(String args[]){
Person p = new Student();
Student s = (Student)p;
//错误:
//Person p = new Person();
//Student s = (Student)p;
}
}