package Test13;
abstract class Base{
Base(){
print();
}
abstract void print();
}
class Derived extends Base{
int i=11;
void print(){
System.out.println("The Derived i:"+i);
}
}
class Test13{
public static void main(String[] args)
{
Derived d=new Derived();
d.print();
}
}
输出的是
The Derived i:0
The Derived i:11
这个我理解,因为在Base类中Print()是抽象方法,Base的构造函数print()就唤醒了子类中Derived的print()方法但是为什么这么写也和上面得到的结果一样了:
package Test13;
class Base{
Base(){
print();
}
void print(){
system.out.println("This is Base Print()");
}
}
class Derived extends Base{
int i=11;
void print(){
System.out.println("The Derived i:"+i);
}
}
class Test13{
public static void main(String[] args)
{
Derived d=new Derived();
d.print();
}
}
输出的是
The Derived i:0
The Derived i:11
而不是:
This is Base Print()
The Derived i:11这是为什么了,那个Base类中明明有一个print()为什么不调用
反去调用Derived()哪位懂的大虾请指点下,谢谢了
abstract class Base{
Base(){
print();
}
abstract void print();
}
class Derived extends Base{
int i=11;
void print(){
System.out.println("The Derived i:"+i);
}
}
class Test13{
public static void main(String[] args)
{
Derived d=new Derived();
d.print();
}
}
输出的是
The Derived i:0
The Derived i:11
这个我理解,因为在Base类中Print()是抽象方法,Base的构造函数print()就唤醒了子类中Derived的print()方法但是为什么这么写也和上面得到的结果一样了:
package Test13;
class Base{
Base(){
print();
}
void print(){
system.out.println("This is Base Print()");
}
}
class Derived extends Base{
int i=11;
void print(){
System.out.println("The Derived i:"+i);
}
}
class Test13{
public static void main(String[] args)
{
Derived d=new Derived();
d.print();
}
}
输出的是
The Derived i:0
The Derived i:11
而不是:
This is Base Print()
The Derived i:11这是为什么了,那个Base类中明明有一个print()为什么不调用
反去调用Derived()哪位懂的大虾请指点下,谢谢了
解决方案 »
- 关于字符串处理的若干问题!!
- {怎么插入空格...}
- 用正则表达式如何提取绝对路径下的文件名?
- Xsocket 客户端运行一次后就会自己关闭
- 学java的进
- 大家都来发挥下想象力,看看RFID技术用在那些行业可以?
- 关于java的加法器,骨灰级或次骨灰级的朋友请进来下....
- 我对多态的理解,求解多态在面向对象方面的实际意义。
- Structs中 <global-exceptions>及Handler的用法?送分
- java 有能开发 播放 MP3 功能的插件吗。或是有没有成型的产品??
- 一个关于JSP连接SQL server的问题
- 为何在Linux下InetAddress.getLocalHost()总是返回“127.0.0.1”?
在的二种方式的父类里
class Base{
Base(){
print();
}
调用print();方法是 实际上 是用 this.print();
而 this会指向将来的调用者对象
Derived d=new Derived();
也就等同于 d.print();
所以会调到 子类的 print(); 并不是多态.
看这个帖啊,一样的