抽象方法与抽象类 --笔记

抽象方法:只有方法名、参数表和返回值,没有方法体。
既然抽象方法没有方法体,那么也就不能被执行。如果某个类含有抽象方法,那么这个类必须定义为抽象类,即在类定义前用关键字abstract修饰。
但需要注意,一个抽象类可以没有抽象方法。
抽象类没有具体的对象。
通常定义抽象类的对象引用指向它子类的对象。

注意:抽象方法和抽象类
   1抽象类不可以创建对象
   2包含抽象方法的类必须被声明为抽象类
   3抽象类中可以包含非抽象方法和抽象方法,但不一定包含抽象方法
abstract class Animal{
    int age;
    Animal(int a){
        age=a;
    }
    int getAge(){
        return age;
    }
    abstract void speak();//抽象方法
}
class Cat extends Animal{
    Cat(int a ){
        super(a);
    }
    void speak(){        //覆写抽象方法speak()
        System.out.println("Cat speaking");
    }
}
class Bird extends Animal{
    Bird(int a ){
        super(a);
    }
    void speak(){
        System.out.println("Bird speaking");
    }
}
public class AnimalDemo {
    static void makeSpeak(Animal a){
        a.speak();//多态,调用哪个speak()方法由a所引用的对象决定
    }
    public static void main(String args[]){
        Cat c=new Cat(3);
        Bird b=new Bird(2);
        makeSpeak(c);
        makeSpeak(b);
    }
}

程序运行结果:
Cat speaking
Bird speaking

结果说明:
虽然抽象类不能创建对象,但可以像普通类那样用作变量的类型,如makeSpeak()方法的参数a。在makeSpeak()中通过动态绑定执行相应的speak()方法。
若一个子类未实现父类中的抽象方法,这个子类也是抽象类,必须用关键字abstract修饰。因为不能创建抽象类的对象,所以抽象类保证了其所有子类若可以实例化,必须实现抽象类中声明的抽象方法。

静态方法、私有方法和final修饰的方法是不能被覆写的,因此这三类方法不能被定义为抽象方法。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值