子类继承父类

继承泛解

继承包含的基本知识点

  所有类直接或间接地继承 object 类。
在这里先广泛的学习了解一下,看不懂没关系,笼统的过一遍,在下面会详细讲解。

public class Son extends Father {
    int age= 10;
    public void show(){
        int age = 5;
        //父类私有成员无法访问
        System.out.println(num);
        System.out.println("局部 " + age);
        System.out.println("本对象 " + this.age);
        System.out.println("father " + super.age);
        System.out.println("这是子类");
    }
    public void method(){
        super.show();
    }
}
class Father extends Object{
    int age = 30;
    int num = 1;
    public void show(){
        System.out.println("这是父类");
    }
}

class Test {
    public static void main(String[] args) {
        Son son = new Son();
        son.show();
        son.method();
    }
}

   从 m a i n \color{pink}{main} main方法进入, new一个新的子类从 S o n \color{pink}{Son} Son类中,我们发现在子类和父类中都有 s h o w ( ) \color{pink}{show()} show()方法,在调用show() 方法时,根据就近原则,首先调用子类方法。

  但是我们想调用父类方法怎么办呢?

在子类中使用关键字 s u p e r \color{pink}{super} super, s u p e r . s h o w ( ) ; \color{pink}{super.show();} super.show(); 这样主函数中就可以调用父类地方法!

继承详解

继承的格式

class 子类  extends 父类{
}

猫狗继承

  猫和狗都属于动物,在这里继承了动物类,这是属于最基本的继承。

//父类
class Animal{
    public String name;
    public int age;

    public void eat(){
        System.out.println(name+" 正在吃饭");
    }
}

//子类
class Dog extends Animal{

    public void WangWang(){
        System.out.println(name+"正在汪汪");
    }
}
//子类
public class cat extends Animal{
    public void MiMi(){
        System.out.println(name+"正在咪咪");
    }
}
public class In {
    public static void main(String[] args) {
        Dog dog = new Dog();
        dog.name = "小狗";
        dog.age = 10;
        dog.WangWang();
        dog.eat();
        System.out.println("===========");
        cat cat = new cat();
        cat.name = "小猫";
        cat.age = 2;
        cat.MiMi();
        cat.eat();
    }
}

运行结果

父类成员的访问

子类中方位父类成员(super)

  在父类和子类中都有变量a,要访问父类中的变量a,看一下下面的代码可以,会访问成功吗?

class A{
    public int a = 10;
    public int b = 20;
    public int c= 30;
}

class B extends A{
    public int a = 6;
    public int d = 35;
    public void method(){
        System.out.println("a:"+a);
        System.out.println("b:"+b);
        System.out.println("c:"+c);
        System.out.println("d:"+d);
    }

}

public class In {
    public static void main(String[] args) {
        B b = new B();
        b.method();
    }
}

显然访问失败了。
在这里插入图片描述

这时候只需要引入关键字super即可。更新method中的代码

public void method(){
        System.out.println("supre.a:"+super.a);
        System.out.println("b:"+b);
        System.out.println("c:"+c);
        System.out.println("d:"+d);
}

在这里插入图片描述

子类构造方法

  在父类中加入构造方法后,此代码还会正常运行吗?
答;编译都过不了。

//父类
class Animal{
    public String name;
    public int age;
    
    public Animal(String name){
        
    }

}

//子类
class Dog extends Animal{


}
//子类
class cat extends Animal{

}
public class In {
    public static void main(String[] args) {
        Dog dog = new Dog();
        dog.name = "小狗";
        dog.age = 10;

        System.out.println("===========");
        cat cat = new cat();
        cat.name = "小猫";
        cat.age = 2;
    }
}

直接报错
在这里插入图片描述

在这里插入图片描述

想一想为什么会这样,加入了一个构造方法就会报错为什么呢?

  继承继承,从字面意思理解,子类继承父类,先有父在有子,子类的对象构造时,需要先调用父类的构造方法,需要修改子类的代码。

修改后的子类代码

//父类
class Animal{
    public String name;
    public int age;
    public Animal(String name){
    }
}

//子类
class Dog extends Animal{
    public Dog(String name){
        super(name);
    }

}
//子类
class cat extends Animal{
    public cat(String name){
        super(name);
    }
}
public class In {
    public static void main(String[] args) {
        Dog dog = new Dog("小狗");
        dog.age = 10;

        System.out.println("===========");
        cat cat = new cat("小猫");
        cat.age = 2;
    }
}

super和this的区别(一张图直接解释,无需定义)

如图,包含的范围不同。
在这里插入图片描述

学地不是技术,更是梦想!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

君生我老

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值