A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© ______雨点ペ   /  2014-11-7 21:46  /  2259 人查看  /  23 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

______雨点ペ 发表于 2014-11-8 20:59
那你的意思是当父类引用指向子类对象时,用父类引用去调用某个方法(这个方法不是子类特有的方法),调用 ...

没错的~~
回复 使用道具 举报
一个java源文件中可以定义多个类,但最多只能有一个类用public修饰,也可以都不用public修饰。当有一个类被public修饰时,那么java源文件名必须和这个公共类类名一致(包括大小写);如果没有类被public修饰,那么源文件名可以随便起。因为你的A类是public修饰的类,所以如果你的源文件名不是A.java的话,编译无法通过。B b = new B( );创建了一个B类对象new B( ),内存地址赋给引用b。A a = b;是将b中存储的对象newB()的地址值赋给引用a,a指向了newB(),内存中始终只存在一个对象newB(),所以,b.fun1();a.fun1();调用的都是newB()的方法,调用fun1()方法时执行的fun2()是复写了A类的fun2()。结果两次都是999
回复 使用道具 举报
哇塞,,过来学习一下哈。。。
回复 使用道具 举报
一个java文件中最多有一个public类
可以没有public类
如果有public类
那main方法必须放在public类中。
几个方法
1、去掉public,这个最直接
2.把main函数移到A类中。
3.把B类改为public,去掉A前面的public,并把文件名改为B.java
结果是两个999
因为子类重写了父类的fun2
并且a指向的是子类对象,所以调用的是子类的fun2
回复 使用道具 举报
12
您需要登录后才可以回帖 登录 | 加入黑马