一、对象的向上转型
1、一个引用能够调用哪些成员(变量和函数),取决于这个引用的类型。
2、一个引用调用的那一个方法,取决于这个引用所指向的对象
e.g.
class Person {
String name;
int age;
void introduce() {
System.out.println("我的名字是"+name+",我的年龄是"+age);
}
}
class Student extends Person {
String address;
void study() {
System.out.println("我正在学习");
}
void introduce () {
super.introduce();
System.out.println("我的家在"+address);
}
}
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(); //调用子类的introduce方法
//p.study();//报错
}
}
二、对象的向下转型
先初始化一个子类对象,再将子类的引用向上转型得到一个父类的引用,再将父类的引用强制转换成子类的引用。
class Test1 {
public static void main (String args []) {
//Student s = new Student();
//Person p = s;
Person p = new Student();
Student s = (Student) p;
/*执行报错,父类的对象无法转成子类的类型
Person p = new Person();
Student s = (Student)p;
*/
}
}
网友评论