Java 抽象类和抽象方法

抽象方法和抽象类
1、抽象类是指在普通类的结构里面增加抽象方法的组成部分。
2、抽象类中不一定有抽象方法
3、但只要类中有抽象方法,这个类就必须声明成抽象类。因为就是说抽象方法只能存在与抽象类中。
4、抽象类不可以用new创建对象。因为调用抽象方法没有意义。
5、抽象类不能被实例化,因为它不是具体的。
6、抽象类有构造方法,但是构造方法不能被实例化。这个构造方法主要用于子类访问父类数据的初始化。
6、子类继承抽象类之后,必须要重写抽象类中的所有的抽象方法。如果子类只重写了一部分抽象方法,那么这个类也必须被定义为抽象类。
     抽象类的子类:
       a、抽象类
       b、不是抽象类,是一个具体的类。只有在重写父类所有的抽象方法才行
7、一个类只能继承一个抽象类。

//抽象类
abstract class Animal{
    public abstract void eat();

    //抽象类有构造方法
    public Animal(){

    }

    public void method(){
        System.out.println("method");
    }
}

//子类还是抽象类,没有重写父类中的方法
abstract  class Dog extends Animal{

}

//子类是个具体的类,重写了全部父类中的抽象方法
class Cat extends Animal{
    public  void eat(){
        System.out.println("我是猫猫");
    }
}

public class AbstractDemo {
    public static void main(String[] args) {
        //可以通过多态方式实例化
        Animal a = new Cat();
        a.eat();                //我是猫猫
        a.method();             //method
    }
}

抽象类的成员
1、成员变量:既可以是变量,也可以是常量
2、构造方法。用于子类访问父类数据的初始化
3、成员方法。可以是抽象的,也可以是非抽象的。
    抽象方法:强制要求子类做的事情
    非抽象方法:子类继承的事情,提高代码复用性


一个类如果没有抽象方法,可不可以定义为抽象类?有什么意义?
可以定义成抽象类。主要目的是不让外界创建对象。要想访问它只能通过他的子类去使用。


扩展
abstract关键字不可以和哪些关键字共存?
A、final。冲突。因为被final修饰的类不能有子类。而被abstract修饰的类一定是一个父类。
B、private。冲突。抽象类中私有的抽象方法不能被子类重写。
C、static。无意义。如果static可以修饰抽象方法,那就可以直接通过类名调用方法,但是抽象方法根本没有方法体,这样抽象方法运行就没意义了。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值