继承(java)

目录

一 继承概念

二 访问优先级

三 关键字super

四 super和this的异同点

五 代码块等在父类和子类中的执行顺序

六 继承方式


一 继承概念

继承机制:是面向对象程序设计使代码可以复用的最重要手段,它允许程序员在保持原有类特性的基础上进行扩展,增加新功能,这样产生新的类,称为派生类。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。继承主要解决的问题是:共性的抽取,然后代码复用。

简单来说,我们可以有一个父类,然后将若干子类中的共同性拿出来放在父类中,然后再由子类继承父类

//父类
class Person{
    public String name;
    int age;
    public void eat(){
        System.out.println(name+"正在吃饭");
    }

}

//子类
class Teacher extends Person{
    int wage;//工资
}
class Student extends Person{
    int shoolnumber;//学号
}

上面代码中,有Teacher和Student类,然后有Person类将它们的共同点列了出来,比如名字,年龄和吃饭的动作,再由Teacher和Studen继承;这样Person就是Teacher和Studen的父类,它们就是Person的子类。

注意:

子类会将父类中的成员变量和成员方法继承到子类中;

子类继承父类之后,必须要新添加自己特有的成员,体系出于基类的不同,否则就没有必要继承了

二 访问优先级

在子类方法中或者通过子类对象去访问成员时:

如果访问的成员变量子类中有,优先访问自己的成员变量;

如果访问的成员变量子类中无,则访问父类继承下来的,如果父类也没有定义,则编译报错;

如果访问的成员变量与父类中成员变量同名,则优先访问自己的。

遵循就近原则,自己有优先拿自己的,如果没有则向父类中去找

三 关键字super

super有三个作用:

1.访问父类的成员方法

2.访问父类的成员变量

3.调用父类的结构方法

代码如下:

//父类
class Persons{
    public String name;
    int age;
    public void eat(){
        System.out.println(name+"正在吃饭");
    }
    public Persons(String name,int age){
        this.name = name;
        this.age = age;
    }
}

//子类
class Teacher extends Persons{
    int wage;//工资
    public Teacher(String name,int age){
        super(name,age);//调用父类构造方法
        super.age = age;//调用父类成员变量
        super.name = name;
        super.eat();//调用父类成员方法
    }
}

注意:super调用父类构造方法时要将其放在方法中的第一行,否则就会出现编译错误

四 super和this的异同点

相同点:

1.都是java的关键字

2.只能在类的非静态方法中使用,用来访问非静态成员方法和字段

不同点:

1.this是当前对象的引用,当前对象即调用示例方法的对象,super相当于是子类对象中从父类继承下来的部分成员的引用

五 代码块等在父类和子类中的执行顺序

在继承层次上,先分别执行父类和子类的静态代码块,然后再执行父类的示例和父类的构造方法,最后执行子类的示例和子类的构造方法。

举例:

//父类
class Persons{
    public String name;
    int age;
    public void eat(){
        System.out.println(name+"正在吃饭");
    }
    public Persons(){
        System.out.println("父类的构造方法");
    }
    static {
        System.out.println("父类的静态代码块");
    }
    {
        System.out.println("父类的示例代码块");
    }
}

//子类
class Teacher extends Persons{
    int wage;//工资
    public Teacher(){
        System.out.println("子类的构造方法");
    }
    static {
        System.out.println("子类的静态代码块");
    }
    {
        System.out.println("子类的示例代码块");
    }
}

当我们用main方法去创造一个Teacher对象时结果如下:

六 继承方式

继承方式分为多层继承或者不同类继承同一个类,不可出现一个类继承多个类的情况

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值