楼主你的问题能不能不要这么精炼。你的意思是不是是: 有个父类,名为 public class Base {} 有个子类,名为 public class Son extend Base{}你希望实现: Son arg = new Base();是这样么? 那么,假设Son类里面定义了一个方法,叫做 public void kickBall() {} 那么 arg.kickBall(); 该怎么办?
拿汽车做比喻吧Car car = new Benz(); 因为奔驰是车这是事实,所以可以赋值给车的引用,表示"奔驰" is "车"反过来 Benz benz = new Car(); 就说不通了,不能说车就一定是奔驰,所以没法把车的对象赋值给奔驰的引用同样的道理,用动物也说得清楚
http://www.cnblogs.com/ericdream/archive/2012/01/07/2315697.html三、动态绑定只是针对对象的方法,对于属性无效。因为属性不能被重写。 1 public class Father{ 2 public String name = "父亲属性"; 3 } 4 public class Son extends Father{ 5 public String name = "孩子属性"; 6 7 public static void main(String[] args){ 8 Father instance = new Son(); 9 System.out.println(instance.name);10 }11 }12 //结果:父亲属性
public class Father{ public String name = "父亲属性"; } public class Son extends Father{ public String name = "孩子属性"; public static void main(String[] args){ Father instance = new Son(); System.out.println(instance.name); } } /*动态绑定只是针对对象的方法,对于属性无效。因为属性不能被重写*/
Java 继承 父类变量为什么不能引用子类实例, 求详解 ================================================= 表示标题有错误 父类变量可以引用子类实例啊 class Father{
} class Son extends Father{} public class Text{ public static void main(String[] args){ Father a=null;//声明父类变量a Son b=new Son();//创建子类对象b a=b;//将子类对象b赋给父类变量a } } 这是可以的啊,你标题就错了好吧,不知道你要表达什么意思。
sorry 。
有个父类,名为 public class Base {}
有个子类,名为 public class Son extend Base{}你希望实现:
Son arg = new Base();是这样么?
那么,假设Son类里面定义了一个方法,叫做 public void kickBall() {}
那么 arg.kickBall(); 该怎么办?
从一个专用类型向通用类型转换,是很安全的。至于向下转型,记得Bruce书里分了几个部分说明,有点零散,LZ有空翻翻书看看咋回事吧,我也忘记了,那本书没看完,毕业后就送人了。
public String name = "父亲属性";
}
public class Son extends Father{
public String name = "孩子属性";
public static void main(String[] args){
Father instance = new Son();
System.out.println(instance.name);
}
}
/*动态绑定只是针对对象的方法,对于属性无效。因为属性不能被重写*/
=================================================
表示标题有错误
父类变量可以引用子类实例啊
class Father{
}
class Son extends Father{}
public class Text{
public static void main(String[] args){
Father a=null;//声明父类变量a
Son b=new Son();//创建子类对象b
a=b;//将子类对象b赋给父类变量a
}
}
这是可以的啊,你标题就错了好吧,不知道你要表达什么意思。