以下内容来自marschen的java4android视频教程.
主要内容
这是一个非常非常的语法.就像吃饭喝水一样平常,面向对象多态性的一个体现.
1.对象的向上转型.
2.对象的向下转换.
对象的向上转型.
向上转型: 将子类的对象赋值给父类的引用.
Student s = new Student();
Person p = s; //向上转换.子类的对象赋值给父类的引用.
向上转型是一定可以成功.
对象的向下转型:
向下转型--将父类的对象赋值给子类的引用.
Student s1 = new Student();
Person p = s1;
Student s2 = (Student)p;
class Person20{
String name;
int age;
void introduce(){
System.out.println("我的名字"+ name+"年龄"+age);
}
}
class Student20 extends Person20{
String address;
void study(){
System.out.println("学习");
}
void introduce(){
//anotherFun();
super.introduce();//调用父类的成员函数,减少重复代码,
//System.out.println("我的姓名是"+name+"我的年龄是"+age);
System.out.println("我的家在"+address);
}
}
//一个引用能够调用那些成员(变量和函数),取决于这个引用的类型
//一个引用调用的是那一个方法,取决于这个引用指向的对象.
class Test20{
public static void main(String args[]){
//正确的向下转型
Person20 p = new Student20();
Student20 s = (Student20)p;
//错误的向下转型
//Person p = new Person();
//Student s = (student)p;
//向上转型
//Student20 s = new Student20();
//Person20 p = s;
//p.name = "张三";
//p.age = 20;
//p.address = "北京"; //此语句不能执行
//一个引用能够调用那些成员(变量和函数),取决于这个引用的类型
//p.introduce();//调用子类的的introduce()
//一个引用调用的是那一个方法,取决于这个引用指向的对象.
}
}