编写程序显示父类、子类构造函数的调用过程,在子类中实现构造函数的继承。

编写程序显示父类、子类构造函数的调用过程,在子类中实现构造函数的继承。,第1张

Parentjava

public class Parent {

public Parent() {

Systemoutprintln("父类无参构造");

}

public Parent(String str) {

Systemoutprintln("父类带参构造str= " + str);

}

}

Childjava

public class Child extends Parent {

public Child() {

Systemoutprintln("子类无参构造");

}

public Child(String str) {

Systemoutprintln("子类带参构造str= " + str);

}

}

Testjava

public class Test {

public static void main(String[] args) 

{

Systemoutprintln("\nnew父类无参构造:");

new Parent();

Systemoutprintln("\nnew子类无参构造:");

new Child();

Systemoutprintln("\nnew父类带参构造:");

new Parent("im parent");

Systemoutprintln("\nnew子类带参构造:");

new Child("im son");

Systemoutprintln("\n");

}

}

打印结果:

new父类无参构造:

父类无参构造

new子类无参构造:

父类无参构造

子类无参构造

new父类带参构造:

父类带参构造str= im parent

new子类带参构造:

父类无参构造

子类带参构造str= im son

请按任意键继续  

一个java文件只能有一个public的类

至于你说的那个 这个要看具体的要求 你写的东西是什么

如果你确定你写的这个类 不需要被其他人(写的程序)使用的话就算不是public的也可以

public class SuperTest {  

    public static void main(String[] args) {  

        Parent c = new Parent();  

        caddAll();  

    }  

}  

  

class Parent{  

    public void add(){  

        Systemoutprintln("A add");  

    }  

      

    public void addAll(){  

        Systemoutprintln("A add ALL");  

        add();  

        //在父子类之间,如果在父类中使用this关键字,那么运行子类时如果走到this行,指的是子类而不是父类。  

        //谁调用,this就是指谁  

        Systemoutprintln(thisgetClass());  

    }  

}  

  

class Child extends Parent{  

  

    @Override  

    public void add() {  

        // TODO Auto-generated method stub  

        Systemoutprintln("B add");  

        superadd();  

    }  

  

    @Override  

    public void addAll() {  

        // TODO Auto-generated method stub  

        Systemoutprintln("B add ALL");  

        superaddAll();  

    }  

      

}

最后输出的结果是

B add ALL

A add ALL

B add

A add

按我的理解,superaddAll()方法调用来Parent中的addAll(),而Parent中的addAll()调用了add()。这里的add最后调用的是Child的add(),既然是superaddAll(),为何最后竟然调用的是子类的add()方法。。。

这里涉及到的问题是当子类调用super走到父类的方法中,这时的对象this到底是指Child子类还是父类Parent? 

正确答案是子类,thisadd();其中的this是指当前对象,也就是Child c = new Child();中的c

因此虽然是在父类中执行的add方法,但实际上执行的是子类的add方法

在父类的add 方法中

Systemoutprintln(thisgetClass());  

结果是Child而不是Parent!

子类和父类之间的命名应该没多大关系吧,只要符合java标示符命名规则就可以了!在java中,我们建议对于类名来说,若有一个单词构成则第一个字母大写,若有若干个字母构成则每个字母的首字母大写,对于方法的命名,若是一个单词构成则首字母小写,若有若干单词构成则除首单词之外其余单词首字母用大写,这也是大家习惯的写法,不按该方法也对!

abstruct class Addition { protected int num1; protected int num2; public Addition( int a, int b ) { num1 = a; num2 = b; } public abstruct object add(); } class NumberAddition : Addition { public NumberAddition( int a, int b ) : base( a, b ) { } public object add() { return (object)( num1 + num2 ); } } class TextConcatenation : Addition { public TextConcatenation( int a, int b ) : base( a, b ) { } public object add() { return (object)( (string)num1 + (string)num2 ); } }

以上就是关于编写程序显示父类、子类构造函数的调用过程,在子类中实现构造函数的继承。全部的内容,包括:编写程序显示父类、子类构造函数的调用过程,在子类中实现构造函数的继承。、一个程序中分别是父类和子类。编译后将生成几个类文件(*.class)、子类怎样调用父类方法等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/10118976.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-05
下一篇2023-05-05

发表评论

登录后才能评论

评论列表(0条)

    保存