继承与多态

1.抽象方法即待实现方法,不完整的方法,那么所在类肯定也不完整
2.子类继承抽象类,那么子类为抽象类或者抽象方法
3.protected用于子类继承父类,修饰父类方法和变量,使得f该方法在子类可调用但是在不同包不能调用
4.对于父类方法重新定义是,权限只能扩大或不变,不能缩小
5.子类实例化时如果没有调用父类的构造方法,那么会自动调用父类默认的无参构造方法super(),super必须在第一行,但是当父类没有参数构造函数,子类又没有调用父类的有参构造函数时,编译失败
6.final修饰的变量自能赋值一次,在申明时没有赋值表示延时赋值,需要在接下来的代码赋值,而不是默认为零,如果接下来m没有赋值,会报错。fianl修饰的类表示不能再被继承,final修饰的方法表示最后的方法,不能再重新或者重新定义如。
7.对于没有说明继承什么的类来说,一定时默认继承object类
8.finalize方法时在垃圾回收之前自动调用的方法
package InheritAndPolymorphism;

public class Main {
    public static void main(String[] args) {
        demoMagiCian();
        demoSwordsMan();


    }



    static void demoSwordsMan() {
        SwordsMan swordsMan=new SwordsMan();
        swordsMan.setName("剑士");
        swordsMan.setLevel(1);
        swordsMan.setBlood(200);
        System.out.printf(
                "Role name is: %s\n"
                + "Role level is: %d\n"
                + "Role Blood id : %d",
                swordsMan.getName(),swordsMan.getLevel(),swordsMan.getBlood());
        showBlood(swordsMan);
    }

    static void demoMagiCian() {
        MagiCian magician=new MagiCian();
        magician.setName("魔法师");
        //magician.setName("剑士");
        magician.setLevel(1);
        magician.setBlood(200);
        System.out.printf(
                "Role name is: %s\n"
                + "Role level is: %d\n"
                + "Role Blood id : %d\n\n",
                magician.getName(),magician.getLevel(),magician.getBlood());
        showBlood(magician);
    }
    /**
     * 如果Role改为角色类,那么有100个角色需要重载100次,显然不是很好,用多态可以解决这个问题
     * 所以即通过Role来操作具体的一种类叫做多态
     */
    static void showBlood(Role r) {
        System.out.println("剩余血量是:"+r.getBlood());
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值