以下内容来自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() //一个引用调用的是那一个方法,取决于这个引用指向的对象. } }