java父类对象可直接调用子类方法??

haizilin 2010-05-19 08:38:53
java父类对象可直接调用子类方法??
父类的对象直接调用子类的成员函数,请高手指教,,,,这也对啊
...全文
17831 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
CCTV7410 2010-09-15
  • 打赏
  • 举报
回复
SuperClass s1 = new SubClass(20);
这一行代码的意思是父类的引用指向了子类的对象,也就是说java里说的多态,
s1这个引用能调用的方法必须是SubClass(子类)类里重写了SuperClass (父类)的方法
实例化SubClass对象时又必须先执行父类的构造方法SuperClass(){ a = 10; }
所以你的输出结果就是这样啦!

红色标识都是java中的规则,不用去理解。记住就完啦!
AnnieBingshuang 2010-05-24
  • 打赏
  • 举报
回复
不能滴
[Quote=引用 4 楼 haizilin 的回复:]
补充代码吧:
class SuperClass {
int a;
SuperClass(){ a = 10; }
public void printA(){System.out.println("父类中a ="+a);}
}
class SubClass extends SuperClass {
int a;
SubClass(int a){ this.a = a; }
……
[/Quote]
  • 打赏
  • 举报
回复
不能。在上转型时候会丢失子类的一些属性,
比如超类:哺乳动物。子类:老虎
在转化时超类对象肯定没有子类对象的一些属性。不然会大乱的
木子0204 2010-05-20
  • 打赏
  • 举报
回复
有点怪呀!!!!
zhuimingwo 2010-05-19
  • 打赏
  • 举报
回复
当然不能
jakjava 2010-05-19
  • 打赏
  • 举报
回复
上面的例子明明是子类调用自已的方法呀
龙四 2010-05-19
  • 打赏
  • 举报
回复
不能,不过可以通过抽象方法来实现
wutian4567268 2010-05-19
  • 打赏
  • 举报
回复
这是因为你new的是子类,声明的是父类,new的时候可以调用子类的人意构造方法,但是以后使用这个实例时只能调用子类重写的方法
haizilin 2010-05-19
  • 打赏
  • 举报
回复
补充代码吧:
class SuperClass {
int a;
SuperClass(){ a = 10; }
public void printA(){System.out.println("父类中a ="+a);}
}
class SubClass extends SuperClass {
int a;
SubClass(int a){ this.a = a; }
public void printA()
{
System.out.println("父类中a= "+ super.a);
System.out.println("子类中a = "+a); }
}
public class OverrideDemo {
public static void main(String args[]) {
SuperClass s1 = new SubClass(20);
s1.printA();
}
}
运行后
父类中a=10
子类中a=20
这不就调用了子类的构造函数了吗?
呵呵 初学者 还请多多指教
dongyangmoney 2010-05-19
  • 打赏
  • 举报
回复
no...........
不善^ 2010-05-19
  • 打赏
  • 举报
回复
不能啊 父类对象可以引用子类对象 并调用子类重写父类的方法
diggywang 2010-05-19
  • 打赏
  • 举报
回复
不能!
绿光 2010-05-19
  • 打赏
  • 举报
回复
不能,子类可以当做父类传输,然后再类型转换为子类,再调用自己的方法。你看看你的哪个父类是不是实际上是个子类对象

50,523

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧