Java基础day9第九章 继承

本文深入解析了Java继承的特性、作用,包括成员变量访问规则、方法重写、构造方法调用,以及super与this的关键用法。实例演示了如何通过继承复用功能并进行扩展。重点介绍了单继承、多级继承和子类间的协作。

1继承的概述:1特性:1继承是多态的前提,没有继承就没有多态 2父类会将功能完全交给子类

                        2作用:共性抽取:多个子类通用的变量方法,直接写在父类(基类 超类)即可

                        3格式:1定义父类(和之前相同)

                                     2定义子类(public class 子类名称 extends 父类名称)

                                        (子类偶其实就是父类的一种)

2继承中成员变量的访问规则:如果子类和父类中有相同名称变量,有两种访问方式

                                                1:直接访问:等号左边对象名是谁,就优先用谁,否则继续向上找

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

3.重名的三种变量调用:1局部变量:在本方法中直接调用

                                       2this.变量名:调用本类

                                       3super.变量名:调用父类

4继承中成员方法的访问特点:重名时,优先按照对象名调用,本类没有再向上找。

5方法的重写(方法的覆盖):1定义:方法名称一样,参数也一样的子父类都有的方法

                                                 2@Override:方法重写的安全监测代码,写在方法上面即可

                                                 3特点: 1:子类方法的返回值必须小于等于父类方法的返回值范围

                                                               比如子类返回值是String 父类可以是String或Object

                                                               2:子类方法的权限修饰符必须大于等于父类,

                                                                所谓权限修饰符就是:public>protected>

                                                                    default(不属于关键字)>private

                                                 4:作用:如果需要在类中添加新功能,对旧的类尽量不要进

                                                        行修改,推荐定义一个新的类,来重复利用其中共性内容。

实例1新手机从老手机中继承功能并添加新功能

package Deomo01Phone;
//类  旧的phone
public class Phone {
    public void call(){
        System.out.println("打电话");
    }
    public void send(){
        System.out.println("发短信");
    }
    public void show(){
        System.out.println("显示号码");
    }
}

package Deomo01Phone;
//类 新的phone
public class NewPhone extends Phone{
    @Override
    public void show() {
        super.show();//将老phone(父类)的show功能继承
        System.out.println("显示姓名");
        System.out.println("显示号码");
    }
}

package Deomo01Phone;
//调用
public class Demo01Phone {
    public static void main(String[] args) {
        Phone phone = new Phone();//老手机
        phone.call();
        phone.send();
        phone.show();
        System.out.println("================");

        NewPhone newPhone = new NewPhone();//新手机
        newPhone.show();
        newPhone.call();
        newPhone.send();

    }
}

6继承中,构造方法的访问特点1:父类子类都有无参构造方法时,新建子对象时会先执行无参父类构造方法,再执行无参子类构造方法(因为子类构造方法默认有super()调用)2:如果父类是有参而子类无参时,会报错,此时要在子类构造方法中加上一个super(参数)调用父类重载构造。3:super的父类构造调用,必须在子类构造方法中的第一行,且只能有一次super调用

7super关键字的三种用法: (访问父类)1子类成员方法中访问父类成员变量

                                                                   2子类成员方法中访问父类成员方法

                                                                   3子类构造方法中访问父类构造方法

8this 关键字的三种用法:(访问本类):1本类成员方法中,访问本类成员变量

                                                                   2本类成员方法访问另一个本类成员方法

                                                                   3本类构造方法访问另一个本类构造方法(注:

                                                                        此时this.与super.冲突,两者都必须在第一句实现

                                                                        所以只能选一个)

9继承的3个特征:1单继承性:父类只能有一个

                             2可以多级继承:父类上面还可以有父类(Java.lang.Object是顶级)

                             3子类可以有多个兄弟姐妹

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值