多态之抽象类与方法的定义,继承并调用

抽象类与抽象方法的定义

抽象类的继承

抽象类的调用

package com.__01Study.javase.demo12;
/*抽象类定义小结
* 1抽象类通常包含绝大多数是抽象方法,也可以是普通方法
* 2.抽象类就是用来被继承的,所以不能使用final修饰
* 3.抽象类不能被实例化,必须依赖子类所进行,不能被new
* */
//抽象类:对类的抽象,更高的层次抽象组件
public abstract class Animal {//不能被final所修饰,final是最终的不可被修改,不可被继承的
   /*抽象方法definition小结
   * 抽象方法没有方法体,也就没有具体的实际功能
   * 一般使用public或者protected修饰或
   * */
    //抽象方法
    public abstract void run();//不能被static所修饰,abstract具体还是体现在对象(实例)上
    public abstract void eat();
//    public abstract String name;没有抽象属性这一说
    //普通方法
    public void say(){
        System.out.println("嗷呜");
    }
    private void name(){
        System.out.println("辛巴");
    }
    //属性
    private String name = "辛巴";
    //构造器
    public Animal() {
    }

    public Animal(String name) {
        this.name = name;
    }
}
/*package com.__01Study.javase.demo12;
*//**
 1.抽象类与抽象方法的定义
 2.继承抽象类
 *//*
public  class Lion extends Animal {//报错原因:继承抽象类必须对抽象方法进行具体的实现
    //    创建内部抽象类
    public abstract class Bird extends  Animal{
        //        重写抽象父类方法
        @Override
        public void run() {
            System.out.println("我不擅长跑步,但我会飞");
        }

        @Override
        public void eat() {
            System.out.println("我擅长使用喙和爪子来捕捉食物");
        }
        //    定义抽象方法
        public abstract void fly();//在抽象子类中科院继续添加抽象方法,也可以是普通方法
    }
    //重写之后类就不会报错
    public class A{}
    @Override
    public void run() {
        System.out.println("我是狮子,我用四条腿进行奔跑");
    }

    @Override
    public void eat() {
        System.out.println("我是狮子,我用牙齿撕咬猎物");
    }
    //创建构造器调用父类有参构造器

    public Lion() {
    super.();//使用super关键字调用父类无参构造器
    }
}*/
/*抽象类继承小结
1.非抽象类想要继承抽象类必须实现对抽象类所以抽象方法的具体实现(重写)
2.抽象派生类可以直接继承抽象基类,不必实现抽象方法,当然也可以实现
3.在抽象子类中也支持创建抽象方法和普通方法
4.抽象类对象的实例化必须通过非抽象子类进行创建
5.抽象类对象都是上转型对象
*/

/*
public class AB{
    外部类不允许使用public修饰时
}*/
/*
package com.__01Study.javase;

        import com.__01Study.javase.demo12.Animal;
        import com.__01Study.javase.demo12.Lion;

public class Application {
    public static void main(String[] args) {
//        Animal animal = new Animal();抽象类不能被实例化
        Animal animal = new Lion();
        animal.eat();
        animal.run();
        animal.say();
//        animal.name();报错,所以类型转化引用的内存地址还是Lion的
        Lion lion = new Lion();
        lion.eat();
        lion.run();
    }
}*/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值