当前位置: 技术问答>java相关
问一个有关c++和java的区别的问题,疑惑
来源: 互联网 发布时间:2015-09-23
本文导语: 这一阵子又看了c++,发现一个问题,请学过的网友解答一下,谢谢 class father{ int x=1; father(){} void showInfo(){System.out.println("this is father!");} //主方法略 } class son extends father{ int x=2; son(){} void sho...
这一阵子又看了c++,发现一个问题,请学过的网友解答一下,谢谢
class father{
int x=1;
father(){}
void showInfo(){System.out.println("this is father!");}
//主方法略
}
class son extends father{
int x=2;
son(){}
void showInfo(){System.out.println("this is son!");}
}
在java中,如果在主方法中将子类的对象赋给父类:
son son1=new son();
father father1=son1;
father1.x应该还是1,而father1.showInfo()应该是子类的方法吧
但是,在c++中,我发现,father1.x还是1,但是father1.showInfo()也是父类的方法,结果是"this is father",而不是java中的"this is son",是不是机制不同呀,还是我搞错了?
class father{
int x=1;
father(){}
void showInfo(){System.out.println("this is father!");}
//主方法略
}
class son extends father{
int x=2;
son(){}
void showInfo(){System.out.println("this is son!");}
}
在java中,如果在主方法中将子类的对象赋给父类:
son son1=new son();
father father1=son1;
father1.x应该还是1,而father1.showInfo()应该是子类的方法吧
但是,在c++中,我发现,father1.x还是1,但是father1.showInfo()也是父类的方法,结果是"this is father",而不是java中的"this is son",是不是机制不同呀,还是我搞错了?
|
hehe java虽然像c++,但是有一些默认的地方不同了
java中的类除非被final声明,否则可以被派生,而c++相反,必须声明virtual才行。
c++中可以定义纯虚函数,java中叫做接口,接口中不能存在内部变量一说。
...
不过总的来说我觉得java的这些改进和“显式”的一些调用要求还是很方便很清晰的。
java中的类除非被final声明,否则可以被派生,而c++相反,必须声明virtual才行。
c++中可以定义纯虚函数,java中叫做接口,接口中不能存在内部变量一说。
...
不过总的来说我觉得java的这些改进和“显式”的一些调用要求还是很方便很清晰的。
|
在java中所有的方法都虚函数,而在c++只有指出virtual才是虚函数,所以在c++中father1.showInfo是调用的父类的方法,而在java中执行的是子类的方法
|
204126(204126) 说的对。你把C++中的showInfo()签署为virtual的。
|
说错了,应该是纯虚类--接口,sorry.