【Java基础】第二章(中) | OOP之继承性

目录

| 继承

基础语法、父子类间的注意事项

抽象与覆盖


| 继承

基础语法、父子类间的注意事项

Java继承特性:只能单继承、可以多级继承、可以多子类

继承的语法

[public] class 子类 extends 父类{

}

父子变量同名

父子变量重名(只会向该类的父类方向查找,绝对不会向子类查找,因为父类不知道子类在哪儿)

this、super、变量名的区别

若 方法的局部变量 和 方法所在的类中的成员变量 重名,可以用this. 来指出成员变量

若 方法的局部变量 和 方法所在类的父类中成员变量重名,可以用super. 来指出父类变量

class Fu{
    int num = 10;//父类变量num
}

class Zi extends Fu{
    int num = 20;//子类变量num
    public void method(){
        int num = 30;//子类方法变量num
    }
}

System.out.println("子类方法中的变量(局部变量):"+num);
System.out.println("子类变量:"+this.num);
System.out.println("父类变量:"+super.num);

父子类构造方法的关系


抽象与覆盖

覆盖重写

@Override

  • 保证父子类的方法名、参数列表完全覆盖。这样才是覆盖重写,否则是创建了一个新方法

  • 子类方法的返回值 【必须小于等于 父类方法的返回值范围】(如 int < Object)

  • 子类方法的权限 【必须大于等于 父类方法的权限修饰符】(public > protected > (default) > private)

  • super可以调用父类的方法

抽象

  • 抽象类

    • 可以定义普通方法

    • 不能直接创建抽象类的对象!

    • 必须用一个子类来继承抽象父类并重写抽象方法。

    • 如果抽象类的子类还是抽象的,那么必须还有个更小的类来实例化

    • 抽象类的构造方法和普通类的构造方法完全一样:【public 类名(){构造方法函数体}】不需要写abstract。抽象类子类的构造方法中,有默认的super()

    • 若抽象类的子类是抽象类,那么 重写抽象父类中所有/部分 的抽象方法,都是被允许的,但是最终必须有一个非抽象的更小的继承类

  • 抽象方法

    • 抽象类不一定要包含抽象方法,但是有抽象方法的必定是抽象类

    • 抽象方法不能定义方法体

  • 语法

//抽象类
[public] abstract class 类名{
	//抽象方法
	public abstract 返回值类型 方法名();
}

抽象类的实例步骤示例

abstract class AbsClass{
    public abstract void absMethod();
    public abstract void absMethod2();
}

abstract class Son extends AbsClass{

    @Override
    public void absMethod2() {

    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Graskli

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

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

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

打赏作者

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

抵扣说明:

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

余额充值