package Diversify;import static Test_purview.print.*;
import Test_initalized.neum;public class Test_diversifyTest1 {
public static void main(String[] args){
Cycle c = new Cycle();
print(" 车轮数:"+c.ride(neum.Bicycle).wh);
Unicycle c1 = new Unicycle();
print(" 车轮数:"+c1.ride(neum.Unicycle).wh);
}
}
class Cycle{
int wh = 0;
public Cycle(){
print("This is in The class Cycle!");
}
public Cycle ride(Object o){
print("Class: "+ this);
return this;
}
}class Unicycle extends Cycle{
int wh = 4;
public Unicycle(){
print("This is in The class Unicycle!");
}
}
class Bicycle extends Cycle{
int wh = 2;
public Bicycle(){
print("This is in The class Bicycle!");
}
}
class Tricycle extends Cycle{
int wh = 3;
public Tricycle(){
print("This is in The Tricycle!");
}
}
结果:This is in The class Cycle!
Class: Diversify.Cycle@61de33
车轮数:0
This is in The class Cycle!
This is in The class Unicycle!
Class: Diversify.Unicycle@ca0b6
车轮数:0
为什么第二个车轮数不是4呢?求解求解。
import Test_initalized.neum;public class Test_diversifyTest1 {
public static void main(String[] args){
Cycle c = new Cycle();
print(" 车轮数:"+c.ride(neum.Bicycle).wh);
Unicycle c1 = new Unicycle();
print(" 车轮数:"+c1.ride(neum.Unicycle).wh);
}
}
class Cycle{
int wh = 0;
public Cycle(){
print("This is in The class Cycle!");
}
public Cycle ride(Object o){
print("Class: "+ this);
return this;
}
}class Unicycle extends Cycle{
int wh = 4;
public Unicycle(){
print("This is in The class Unicycle!");
}
}
class Bicycle extends Cycle{
int wh = 2;
public Bicycle(){
print("This is in The class Bicycle!");
}
}
class Tricycle extends Cycle{
int wh = 3;
public Tricycle(){
print("This is in The Tricycle!");
}
}
结果:This is in The class Cycle!
Class: Diversify.Cycle@61de33
车轮数:0
This is in The class Cycle!
This is in The class Unicycle!
Class: Diversify.Unicycle@ca0b6
车轮数:0
为什么第二个车轮数不是4呢?求解求解。
解决方案 »
- 解释程序代码
- 其实我知道我理解错了,各位给条明路。最好让我理解思路!谢谢!
- 十万火急求各位高手帮忙,要写一个能够自由添加文字的程序,文字最好能移动的,最后还要保存,我该怎么做呢?最好有代码,谢谢啦(十万火急)
- 请问能够不用通道进行非阻塞IO编程吗?
- 为什么我这个问题贴发了这么多一个回复都没有呢?CSDN上的高手哪去了啊?
- 模拟银行 (求助:救命问题啊)
- 用PrintWriter向文件输出后为什么不能修改? 那位高手帮忙看一下?谢了
- 如何知道一个java对象所占用的字节数?
- javaw有啥用?迷惑!望赐教!
- 简单问题,送分啦!
- 请教各位大侠为什么编译器老是显示无法覆盖Object的toString()方法
- 关于jdk中的InvocationHandler中的invoke方法传入代理类实例的疑惑
如果在子类中重写ride()并且返回该子类对象,那么调用的是该子类的wh变量,如果该子类没有wh变量,那么取的还是父类wh变量。
明白了吗?
这种upcast(向上造型)
1.域:调用父类属性
2.方法:调用子类方法 在java多态中重写,只是子类重写父类方法并覆盖,而属性这不存在多态。。即变量在子类,父类中都是独立存在的调用规则如上:这是sun公司的规定,必须是这样的语法使用者只要会用就ok了,
《thinking in java 4th》
编译都通不过,,说明这个属性不是他拥有的)这样可以得到这个结果:
This is in The class Cycle!
This is in The class Cycle!
This is in The class Bicycle!
Class: Cycle@d9f9c3
车轮数:2
This is in The class Cycle!
This is in The class Unicycle!
This is in The class Cycle!
This is in The class Unicycle!
Class: Unicycle@1a46e30
车轮数:4
public static void main(String[] args){
Cycle c = new Cycle();
System.out.println(" 车轮数:"+((Bicycle)c.ride(new Bicycle())).wh);
Unicycle c1 = new Unicycle();
System.out.println(" 车轮数:"+((Unicycle)c1.ride(new Unicycle())).wh);
}
}
class Cycle{
int wh = 0;
public Cycle(){
System.out.println("This is in The class Cycle!");
}
public Object ride(Object o){
System.out.println("Class: "+ this);
return o;
}
}