java基础知识19 继承关系的子父类的方法,常量调用关系

一 继承关系

1.1 继承关系调用总结

1.具有子父类继承关系,子类的有参构造和无参构造,都会默认在首行调用super(),都会默认调用父类的构造方法。
2.具有子父类继承关系,子类和父类具有相同的成员变量,直接访问成员变量,则是父类中的成员变量。
3.通过F f=new Zi()的方式,调用父类的方法(构造方法和普通方法),在方法中调用this.A();this指的是子类对象;A()方法被子类重写过,则调用的子类的A()方法;没有被重写过,则调用父类中的A()方法。

1.2  案例1 没有重写父类方法

1.父类: 定义show()方法;info()方法

public class F {
    int x=10;
    public F() {
        System.out.println("父构造");
        x=11;
        this.show();
    }
    public void show(){
        System.out.println("我是父类");
    }
    public void info(){
        System.out.println("父类 info...");
        this.show();

    }
}

2.子类:继承F类,没有重写父类show()方法

public class Z extends  F{
    int x=20;
    public Z() {
        this.show();
        System.out.println("=======");
    }
    public  Z(String str){
        x=40;
        System.out.println("str:"+str);
    }
    public void show2(){
        System.out.println("我是子类");
    }
}

3.调用

public class TestS {
    public static void main(String[] args) {
        F f =new Z("123");
        f.show();
       // f.info();
        System.out.println("x:"+f.x);
    }
}

1.查看到 这里的this,指的是子类Z的对象

2.执行结果:

父构造
我是父类
str:123
我是父类
x:11

1.具有子父类继承关系,子类的有参构造和无参构造,都会默认在首行调用super(),都会默认调用父类的构造方法。
2.具有子父类继承关系,子类和父类具有相同的成员变量,直接访问成员变量,则是父类中的成员变量。 

1.3  案例2 重写父类方法的方法

1.父类:定义show()方法,被子类重写

public class F {
    int x=10;
    public F() {
        System.out.println("父构造");
        x=11;
        this.show();
    }
    public void show(){
        System.out.println("我是父类");
    }
    public void info(){
        System.out.println("父类 info...");
        this.show();

    }
}

2.子类: 重写父类中的show()方法

public class Z extends  F{
    int x=20;
    public Z() {
        this.show();
        System.out.println("=======");
    }
    public  Z(String str){
        x=40;
        System.out.println("str:"+str);
    }
    public void show(){
        System.out.println("我是子类");
    }
}

3.调用

public class TestS {
    public static void main(String[] args) {
        F f =new Z("123");
        f.show();
       // f.info();
        System.out.println("x:"+f.x);
    }
}

1.查看到 这里的this,指的是子类Z的对象

2.执行结果:

父构造
我是子类
str:123
我是子类
x:11

 结论:

1.具有子父类继承关系,子类的有参构造和无参构造,都会默认在首行调用super(),都会默认调用父类的构造方法。
2.具有子父类继承关系,子类和父类具有相同的成员变量,直接访问成员变量,则是父类中的成员变量。
3.通过F f=new Zi()的方式,调用父类的方法(构造方法和普通方法),在方法中调用this.A();this指的是子类对象;A()方法被子类重写过,则调用的子类的A()方法;没有被重写过,则调用父类中的A()方法。

1.4  父子类中成员变量相同,访问逻辑

当子类,父类具有相同成员变量时,操作成员变量的方法被子类重写,或者是子类自己独有的,则访问的变量则是子类中的成员变量,否则是父类中的成员变量

https://www.cnblogs.com/shuai2019/p/11103328.html

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值