向上转型:生成一个子类对象,将子类的对象赋值给父类的引用。
1.一个引用能够调用哪些成员(变量和函数),取决于这个引用的类型;
2.一个引用调用的是哪一个方法,取决于这个引用所指向的对象。
class Person{
String name;
int age;
void introduce(){
System.out.println("我的名字是"+name+",我的年龄是"+age);
}
}
class Student extends Person{
String adress;
void introduce(){
super.introduce();
System.out.println("我的家在"+adress);
}
void study(){
System.out.println("我正在学习");
}
}
class Test{
public static void main(String args []){
Student s=new Student();
Person p=s;
p.name="张三";
p.age=21;
//p.address="北京";一个引用能够调用哪些成员(变量和函数),取决于这个引用的类型
p.introduce();//一个引用调用的是哪一个方法,取决于这个引用所指向的对象
//p.study();一个引用能够调用哪些成员(变量和函数),取决于这个引用的类型
}
}
向下转型:在向上转型后将父类的对象赋值给子类的另一个引用。
class Test{
public static void main(String args []){
Student s1=new Student();
Person p=s1;
Student s2=(Student)p;
//错误的向下转型
//Person p=new Person();
//Student s=( Student)p;
}
}