暑假重学JavaSE第五天继承

前言:

判断一门语言是不是面向对象编程语言的标准:是否满足封装,继承,多态

Java是单继承,C++是多继承(缺点:类的体系结构混乱,菱形继承问题等)

父类有:直接父类和间接父类;同理有直接子类与间接子类

可以理解为 爷爷,儿子,孙子

何时继承:

当两个类中有多个相同的属性或方法时,抽取父类,把相同的属性和方法放入父类中

减少代码冗余,实现代码复用

子类可以重写父类的方法

注解:

@Override 重写父类的方法

@Deprecated 不推荐使用的方法

@SuppressWarnings 忽略警告

创建子类对象一定会调用父类的构造函数

创建子类对象默认调用父类的无参构造函数

子类只能调用父类存在的构造函数

子类中使用super关键字显示自定义调用父类某个构造函数

代码自行体会

package com.meilingluo.inherit;

public class DuJiaoshou extends XM{
    @Override
    void a(){
        System.out.println("独角兽冲冲冲");
    }
    void b(){
        System.out.println("我是独角兽");
    }
}
package com.meilingluo.inherit;

public class FeiMa extends XM{

    String wing;
    void fly(){
        System.out.println("使用"+wing+"翅膀");
    }

    @Override//注解,重写方法,可加可不加
    void a(){
        //重写父类方法,相同的方法声明,不同的方法实现
        //方法声明 = 返回值类型 + 方法名 + 参数列表
        System.out.println("勇敢柔柔,不怕困难");
    }
    void c(){
        super.a();//父类
        this.a();//子类
    }


}
package com.meilingluo.inherit;

public class Skill {
    void gongji(XM xm){
        xm.attack();
    }

}
package com.meilingluo.inherit;

public class Test {
    public static void main(String[] args) {
        FeiMa rourou = new FeiMa();
        rourou.name = "柔柔";
        rourou.a();
        rourou.wing = "圣光之翼";
        rourou.fly();
        //声明父类,创建子类
        XM ziyue;
        ziyue = new DuJiaoshou();
        ziyue.a();

        //ziyue.b;//声明的什么类型,只能调用声明类的方法
        XM yunbao = new FeiMa();
        Skill skill = new Skill();
        skill.gongji(ziyue);
        FeiMa feiMa =  new FeiMa();
        feiMa.c();
    }
}
package com.meilingluo.inherit;

public class XM {
    String name;

    void a(){
        System.out.println("友谊是最强大的魔法");
    }
    void attack(){
        System.out.println("普通攻击");
    }
}

模块结构:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值