面向对象之继承

本文详细介绍了Java中的继承机制,包括继承的概念、格式及访问特性。强调了子类如何继承父类的方法和成员变量,并讨论了super关键字的三种用法。同时,解释了方法重写的原因和规则,以及构造方法的调用顺序。此外,还阐述了this关键字在访问本类内容中的应用,最后总结了Java继承的三个特点:单继承、多级继承和唯一直接父类。
摘要由CSDN通过智能技术生成

1、概述


面向对象的三大特性之一,是多态的前提

主要解决的问题是共性抽取,用于抽取类之间相同的部分

子类可以拥有父类的内容,也可以拥有自己的内容

2、继承的格式


父类就是普通的类

子类:

public class 子类的名称 extends 父类名称{
}

举例

父类:

//定义一个父类,人
public class Person {
    public void say(){
        System.out.println("说了一句话");
    }
}

子类:

public class Teacher extends Person{
}

创建子类对象并使用继承下来的方法

public class ExtendsDemo {
    public static void main(String[] args) {
        Teacher teacher = new Teacher();
        //Teacher类当中虽然什么都没有,但是会继承父类
        teacher.say();
    }
}

注意:子类也可以是父类

3、访问成员变量的特点

没重名的按正常的方法就好,子类和父类的成员变量重名了就需注意以下几点:

有两种访问方法:

1、直接通过子类对象访问成员变量

​ 等号左边是谁,就优先用谁,没有则向上找

2、间接通过成员方法使用成员变量

​ 通过间接的成员方法访问成员变量,该方法属于谁就优先用谁

三种重名同时出现

即局部变量,本类成员变量,父类成员变量同时重名,用一下方法区分

局部变量: 直接使用
本类成员变量:this.成员变量名
父类成员变量: super.成员变量名

4、成员方法的访问

没重名正常用即可

重名时,创建的对象是谁,就优先用谁,没有则向上找

注意:无论成员方法还是成员变量,如果没有,都是向上找父类,不会向下找子类

5、super关键字的三种用法

1、在子类的成员方法中访问父类的成员变量

public void method(){
    System.out.println(super.num);
    //调用父类中的num
}

2、在子类的成员方法中,访问父类的成员方法

super.mehod()

3、在子类的构造方法中,访问父类的构造方法

super()

6、方法的重写

重写概念(override):需要有继承关系,子类重写父类的方法!

重写都是方法的重写与属性无关

特点:创建的是子类对象,则优先用子类方法

注意:

​ 1、方法名必须相同

​ 2、参数列表列表必须相同

​ 3、修饰符:范围可以扩大但不能缩小

public > protected > (default) > private
default是留空,什么都不写

4、抛出的异常:范围,可以被缩小,但不能扩大

ClassNotFoundException-->Exception(大)

重写,子类的方法和父类必要一致;方法体不同!

为什么需要重写:

1、父类的功能,子类不一定需要,或者不一定满足!

alt+insert:override;

7、构造方法的访问特点

父类和子类的构造方法都会执行,先执行父类再执行子类

注意:

​ 1、子类构造方法中有一个默认隐含的super()调用

​ 2、可以通过super关键字来使子类构造调用父类重载构造

​ 3、super的父类构造调用,必须是子类构造方法的第一个语句

​ 4、子类必须调用父类构造方法,不写则默认用父类无参构造


8、this关键字的三种用法

super用来访问父类内容,而this关键字用来访问本类内容

1、在本类的成员方法中,访问本类的成员变量

2、在本类的成员方法中,访问本类的另一个成员方法

3、在本类的构造方法中,访问本类的另一个构造方法

注意:第三种用法中this(...)必须是构造方法的第一个语句(唯一一个)

public Th(){
    this(123);//本类的无参构造,调用本类的有参构造
}
public Th(int n){

}

9、java继承的三个特点

1、JAVA语言是单继承的(一个类的父类只有唯一一个)

2、JAVA语言可以多级继承,最初是java.lang.Object类

3、一个子类的直接父类是唯一的,但一个父类可以用多个子类
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值