抽象类和抽象方法

1 概念

        父类中的方法,被它的子类们重写, 某种情况下,父类只能知道子类应该具备一个怎样的方法,但是不能够明确知道如何实现该方法。只能在子类中才能确定如何去实现方法体。例如:。 比如学校又新产生了新专业学生,那么专科生直接继承学生,然后对自己特有的属性和方法进行补充即可。这样对于代码的重用也是很好的体现。

        我们把没有方法主体的方法称为抽象方法。Java语法规定,包含抽象方法 的类就是抽象类。

2 语法结构

2.1 抽象类

包含抽象方法的类。如果一个类包含抽象方法,那么该类必须是抽象类,使用 abstract 关键字修饰。

public abstract class 类名 {
    //抽象类中可以包含变量、常量,抽象方法,非抽象方法
}

2.2抽象方法

 只有方法的声明,没有方法体,即没有{},以分号 ; 结尾,使用 abstract 关键字修饰:

 
    //抽象方法
	修饰符 abstract 返回值类型 方法名(参数列表);
	public abstract void run();
	
    //非抽象方法
    public abstract void run(){}

3 抽象类和抽象方法的使用

编写父类

//父类  包含抽象方法的类是抽象类
public abstract class Animal {
    private String name;
    //抽象方法
    public abstract void run();
}

编写子类

public class Cat extends Animal {
//必须重写父类的抽象方法
    @Override
    public void run() {

    }
}

 编写测试类

public class TestDemo {
    public static void main(String[] args) {
        Animal a = new Animal();//不能实例化对象
        Cat cat = new Cat();//只能通过子类实例化
    }
}

4 注意事项

1 抽象类不能实例化,不能直接创建对象。抽象类是用来被继承的,继承抽象类的子类必须重写父类所有的抽象方法。否则,该子类也必须声明为抽象类,使用 abstract 关键字修饰。

2 抽象类也是类,因此原来类中可以有的成员,抽象类都可以有,那么抽象类不能直接创建对象,为什么还有构造器呢?供子类调用,子类创建对象时,需要为从父类继承的属性初始化。

3  抽象类不能使用final修饰。

4 抽象方法是不能私有的private修饰

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值