精华内容
下载资源
问答
  • 在本篇文章里小编给大家整理了关于java子类调用父类方法中包含子类重写的实例方法以及相关知识点,需要的朋友们可以学习下。
  • 当一个类继承于另一个类,子类中没有父类方法时,用子类的对象调用方法时,会首先在子类中查找,如果子类中没有该方法,再到父类中查找。 当一个方法只在父类中定义时,调用方法时会使用父类中的属性。 如果该...

    当一个类继承于另一个类,子类中没有父类的方法时,用子类的对象调用方法时,会首先在子类中查找,如果子类中没有该方法,再到父类中查找。

    当一个方法只在父类中定义时,调用该方法时会使用父类中的属性。

    如果该方法中又调用了其他方法,那么还是按照之前的顺序,先在子类中查找,再在父类中查找。如果在子类中找到,调用子类的方法会使用子类的属性。

    展开全文
  • 主要介绍了Java父类调用子类方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • Java子类调用父类的构造方法

    千次阅读 2020-05-20 20:44:47
    一、自动调用父类无参构造方法 //这是父类 public class SuperClass { //父类无参构造方法 public SuperClass(){ System.out.println("父类无参构造方法"); } //父类带参构造方法 public SuperClass(String ...

    一、自动调用父类无参构造方法

    //这是父类
    public class SuperClass {
    
        //父类无参构造方法
        public SuperClass(){
            System.out.println("父类无参构造方法");
        }
    
        //父类带参构造方法
        public SuperClass(String str){
            System.out.println(str);
        }
    }
    
    //这是子类
    //这是子类
    public class SubClass extends SuperClass{
    
        //子类无参构造方法
        public SubClass(){
            System.out.println("子类无参构造方法");
        }
    
        //子类带参构造方法
        public SubClass(String str){
            System.out.println(str);
        }
    }
    
    //这是测试类
    public class TestMain {
    
        public static void main(String[] args) {
            SubClass sc1 = new SubClass();
            SubClass sc2 = new SubClass("子类带参构造方法");
        }
    }
    

    输出结果:

    父类无参构造方法
    子类无参构造方法
    父类无参构造方法
    子类带参构造方法

    总结:在子类初始化时会自动调用父类的无参构造方法(只调用无参构造方法,不调用带参构造方法)

    二、手动调用父类无参构造方法

    //这是父类
    public class SuperClass {
    
        //父类无参构造方法
        public SuperClass(){
            System.out.println("父类无参构造方法");
        }
    
        //父类带参构造方法
        public SuperClass(String str){
            System.out.println(str);
        }
    }
    
    //这是子类
    public class SubClass extends SuperClass{
    
        //子类无参构造方法
        public SubClass(){
            super();
            System.out.println("子类无参构造方法");
        }
    
        //子类带参构造方法
        public SubClass(String str){
    	    super();
            System.out.println(str);
        }
    }
    
    //这是测试类
    public class TestMain {
    
        public static void main(String[] args) {
            SubClass sc1 = new SubClass();
            SubClass sc2 = new SubClass("子类带参构造方法");
        }
    }
    

    输出结果:

    父类无参构造方法
    子类无参构造方法
    父类无参构造方法
    子类带参构造方法

    总结:子类也可以手动调用父类的无参构造方法

    三、手动调用父类的带参构造方法

    //这是父类
    public class SuperClass {
    
        //父类无参构造方法
        public SuperClass(){
            System.out.println("父类无参构造方法");
        }
    
        //父类带参构造方法
        public SuperClass(String str){
            System.out.println(str);
        }
    }
    
    //这是子类
    public class SubClass extends SuperClass{
    
        //子类无参构造方法
        public SubClass(){
            super("子类调用父类的带参构造方法");
            System.out.println("子类无参构造方法");
        }
    
        //子类带参构造方法
        public SubClass(String str){
            super("子类调用父类的带参构造方法");
            System.out.println(str);
        }
    }
    
    //这是测试类
    public class TestMain {
    
        public static void main(String[] args) {
            SubClass sc1 = new SubClass();
            SubClass sc2 = new SubClass("hello world");
        }
    }
    

    输出结构:

    子类调用父类的带参构造方法
    子类无参构造方法
    子类调用父类的带参构造方法
    子类带参构造方法

    总结:子类初始化时不会自动调用父类的带参构造方法,如果用到了父类的带参构造方法,则需要手动去调用,手动调用父类的构造方法后,子类不再自动调用父类的无参构造方法;

    注意:不管是子类手动调用父类的无参构造方法,还是手动调用父类的带参构造方法,代码必须写在子类构造方法的第一行

    展开全文
  • 今天小编就为大家分享一篇关于C++/JAVA/C#子类调用父类函数情况总结,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
  • java子类调用父类构造器函数

    万次阅读 多人点赞 2019-06-25 15:52:54
    java子类调用父类构造器函数详解

    正文

    class FatherClass{
        public FatherClass(){
            System.out.println("父类 无参 构造函数");
        }
        public FatherClass(int i){
            System.out.println("父类 一个参数构造函数super = "+i);
        }
        public FatherClass(int i,String j){
            System.out.println("父类 一个参数构造函数superi = "+i+",superj = "+j);
        }
    
    }
    
    class SonClass extends FatherClass{
        public SonClass(){
    //      super(22);//line 1
            System.out.println("子类 无参 构造函数");
        }
        public SonClass(int a){
            super(33,"Hello");//line 2
            System.out.println("子类一个参数构造函数sub = "+a);
        }
        public void fun(int a){//子类中定义一个实例函数
            //super(33,"Hello");//构造函数调用必须声明在构造函数中,这行代码不注释的话会报错
            System.out.println("子类一个参数构造函数sub = "+a);
        }
    }
    public class ConstructorExtend {//测试子类继承父类的构造函数
        public static void main(String args[]){
    //  FatherClass fa = new FatherClass();
    //  FatherClass fa1 = new FatherClass(100);
    //  SonClass son = new SonClass();
        SonClass son1 = new SonClass(200);
        son1.fun(2);
        }
    }
    

    子类 调用 父类的构造函数:(构造函数不会被继承,只是被子类调用而已)

    1、子类所有的 构造函数 默认调用父类的无参构造函数(其实是默认省略掉了一行代码:super(););省略掉的这行super()代码可以自行添加到构造函数的第一行(必须是第一行,否则报错)

    2、如果父类没有定义构造函数,系统会默认定义一个无参无返回值的构造函数,子类继承时无需(无需的意思是:可以写可以不写)在子类构造函数中显式调用super( );如果父类定义了有参构造函数,此时子类的构造函数中第一行必须显式调用父类定义的某个有参数构造函数。即,显式调用对应的参数个数、对应参数类型与此super( [arg0][,arg1]…. )的父类构造函数。

    3、如果子类的某个构造函数 想 调用父类的其他的带参数的构造函数,在构造函数的第一行人为添加 super(val1,val2[,val3…]),super()括号中的变量数量由想调用的父类的构造函数中的变量数量决定。如代码中的line 2,调用的是父类构造函数中两个参数的构造函数,那么Super(20,”Hello”)就两个变量。

    4、自行添加super(val1,val2,…),就可以指定调用父类的那个参数类型和数量一致的构造函数。之后在此子类构造函数中,系统不会再默认调用父类无参构造函数;

    5、如果子类的每个构造函数都自行添加super([val1,]….),除非人为调用父类无参构造函数,否则的话父类的无参构造函数可以不写。有super指定调用的父类构造函数存在即可

    6、super指代父类对象,可以在子类中使用 super.父类方法名(); 调用父类中的方法(无论是类方法还是实例方法都可以),此外调用实例方法还可以在方法内部实例化再调用


    作者简洁

    作者:小碗汤,一位热爱、认真写作的小伙,目前维护原创公众号:『我的小碗汤』,专注于写golang、docker、kubernetes等知识等提升硬实力的文章,期待你的关注。 转载说明:务必注明来源(注明:来源于公众号:我的小碗汤, 作者:小碗汤)

    展开全文
  • 子类继承父类,重载了父类方法。面试中经常考到方法的调用,以及构造函数先后顺序。 例子 定义父类,申明方法say() public class TestParent { protected static String name = "parent"; TestParent(){ say(); ...

    背景

    子类继承父类,重写了父类方法。面试中经常考到方法的调用,以及构造函数先后顺序。

    例子

    定义父类,申明方法say()

    public class TestParent {
        protected static String name = "parent";
        TestParent(){
            say();
        }
        public void say(){
            System.out.println("Hello"+ name);
        }
    }
    
    

    定义子类,申明方法say()

    public class TestChild extends TestParent{
        private String name = "child";
        
        TestChild(){
            say();
        }
        public void say(){//重写say()
            //super.say();super关键字指定调用父类方法
            System.out.println("Hello"+ name);
        }
        public static void main(String[] args) {
            TestParent a = new TestChild();
        }
    }
    

    运行main方法时,当时想都没想认为是

    Helloparent
    Hellochild
    

    其实是错误的,在执行父类的构造方法时,调用的并不是父类的say()方法,而是子类重写的say(),此时子类非静态变量并未加载,所以输出是“null”。要想指定调用父类方法可用super.say()来指定,若想执行父类构造函数时输出name,可将子类变量设置为static/final,有了static/final关键字,便会先于构造函数执行。

    Hellonull
    Hellochild
    

    PS:父类子类加载顺序

    父类静态变量
    父类静态代码块
    子类静态变量
    子类静态代码块
    父类非静态变量
    父类非静态代码块
    父类构造函数
    子类非静态变量
    子类非静态代码块
    子类构造函数
    静态资源存放在方法区,线程共享,只会加载一次。

    展开全文
  • Java子类调用父类构造方法

    万次阅读 多人点赞 2017-09-29 14:49:15
    Java中,子类的构造过程中,必须调用其父类的构造函数,是因为有继承关系存在时,子类要把父类的内容继承下来,通过什么手段做到的?   答案如下:   当你new一个子类对象的时候,必须首先要new一个父类...
  • 简单说,如果子类继承父类自己写构造方法中没有显示调用父类有参构造方法,则会先隐式调用父类无参构造方法,若是先显示(super(300))调用了父类有参构造方法,则父类的无参构造方法就不会再被调用。 ...
  • Java 子类调用父类构造函数----super()详解

    万次阅读 多人点赞 2017-07-17 16:51:54
    Java 子类调用父类构造函数----super()详解
  • java子类父类方法调用

    千次阅读 2018-06-10 20:16:44
    如果子类重写了父类的方法,会调用子类方法,若未重写则调用父类方法。package com.test; /** * @author Administrator * @date 2018/6/9 */ public class TestParent { public void testA()...
  • public class A { public String name;... System.out.println("父类的无参数构造方法"); } public A(String str){ this.name=str; System.out.println("父类的有参数构造方法"); } } ...
  • 当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则error;如果有,调用子类的同名方法。 example: package demo; public class people { public people(){ } public void run(){ System....
  • 当有相同的属性或者方法是this子类表示调用自己的属性或者方法, super调用父类的属性或者方法。 当子类调用的属性方法在子类中不存在时,那么this和super都是调用父类的属性或者方法 ...
  • # 大致流程是 main 中调用子类的 testSub()方法 -- testSub()方法调用父类的testParent() 方法 -- testParent() 方法调用test()方法;需要注意的是test()方法在父类和子类中都存在,子类重写了父类的test()方法; ...
  • Java子类访问父类私有变量的思考

    千次阅读 2020-06-30 17:42:12
    父类User,包含私有变量name和money; 以及两个构造函数和基本的getter方法。 public class User { public User() { } public User(String name, int money) { this.name = name; this.money = money; } ...
  •  4、编译器会在每个构造方法的第一行隐式添加父类的默认无参构造器,即添加super()。  新手容易犯的错误: class Employee extends Object {  public Employee(int id) {  } } class Teacher extend
  • Java子类重写父类方法

    千次阅读 2020-05-20 21:35:49
    Java子类重写父类方法 一、方法名一致 //这是父类 public class SuperClass { public void test(){ System.out.println("我是父类方法"); } } //这是子类 public class SubClass extends SuperClass{ //...
  • Java 子类继承父类方法

    千次阅读 2019-05-22 09:13:32
    类 A 称为基类(父类),类 B 称为派生类(子类) 类继承关系语法形式 Class 派生类名:基本名表 { 数据成员函数声明 } 基本名表 构成 访问控制 基类名1, 访问控制 基本名2,……..,问控制 基本名...
  • 关于子类调用父类是否必须使用super字段的解释: 不一定 1。当子类重写父类的函数时,在子类还需要调用父类的该函数时,需要使用到super(否则会默认使用的是子类的当前函数)。 2.调用父类的变量,需要使用super....
  • 重写和重载 重写是继承的时候,重写是子类父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变。...子类重写了父类方法,如果用父类的对象去调用,就会使用父类的实现 如果用子类的对象去调用...
  • 父类调用子类方法吗?答:能。 怎么做?● 把子类传递到父类的有参构造中,然后调用。● 使用反射的方式调用,你使用了反射还有谁不能调用的?!● 父类调用子类的静态方法。案例展示:[java] view plain ...
  • 主要介绍了java子类继承父类实例-披萨的选择实现代码,具有一定借鉴价值,需要的朋友可以参考下。
  • Java子类实例化调用父类构造方法

    千次阅读 2019-03-13 14:09:25
    子类继承父类后,获取到父类的属性和方法,这些属性和方法在使用前必须先初始化,所以须先调用父类的构造器进行初始化 同时父类也会加载进来,静态代码块会执行 ...
  • java子类调用父类的构造函数-----super()详解 1.子类不能继承父类的构造函数,但是可以调用父类的构造函数 2.如果父类没有定义构造函数,系统会默认定义一个无参无返回值的构造函数,子类继承时无需在子类构造函数...
  • java子类如何调用父类变量和方法

    万次阅读 多人点赞 2016-09-21 16:56:05
    子类直接调用父类的public方法,可以把公用类放到父类中,这样子类中无需再定义一遍, testSon.fun3(); } // 从结果中可以看出:调用某个类的构造方法的时候总是会先执行父类的非静态代码块,然后执行父类的构造方法...
  • java 子类继承父类方法的重写(覆盖)

    万次阅读 多人点赞 2018-10-28 16:10:07
    java子类继承父类方法的重写(覆盖)   在程序中,如果想声明一个类继承另一个类,需要使用extends关键字。 格式: class 子类 extends 父类 {} public class Text { public static void main (String[]...
  • /* 举个例子:在恰当的时间使用:super(实际参数列表) */ //测试程序 public class SuperTest03{ public static void main(String[] ... //构造方法 public Account(){ } public Account(String actno,double bal
  • 如果子类调用父类的无参构造函数,...此时, 如果父类仅定义了有参构造方法, 并且子类没有定义任何的构造方法(系统会为它提供一个无参构造方法, 然后隐式调用父类无参构造方法), 或子类定义的构造方法中没有显式调用父

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 293,879
精华内容 117,551
关键字:

java子类调用父类方法

java 订阅