Java抽象类


作者:云都小生


概述



面向对象的特性之一就是抽象,而在Java中有两种形式是用来体现这一种抽象思想的。现在我们需要来认识一下,其中一个强大的新概念——抽象类。

在软件开发中,开发过程中经常会碰到这样的场景——一个父类的方法并不确定,不同的子类实现的方式不一样。

例如,动物都有叫的方法,但是不同动物叫的方式不一样,所以我们可以先让这个方法变成“不确定”,让不同的动物去实现各自叫的方式。

这两种情况下,我们都可以考虑将类定义成抽象类。


语法



不管是在Java还是在C#中,都采用abstract来修饰抽象类。

abstract class 类名
{

}

这就是一个抽象类最基本的框架。

我们可以在抽象类中定义普通方法,也可以在抽象类中定义抽象方法。

[public|protected] abstract class 类名
{
    public void method1()
    {
        //代码块
    }

    abstract void method2();
}

由于method1的方法我们已经是确定的,所以我可以在抽象类中定义。但是,由于method2方法还不确定,我们希望子类再去补充这个方法,所以我们修饰成抽象方法。

需要注意的重要三点是

声明了抽象方法的类,必须是抽象类。

抽象类是为了继承而存在的,因为抽象类不能被实例化,只有它的子类才能被实例化。

子类在继承抽象父类的时候,必须实现抽象类中的抽象方法。

在其他方面,其实抽象类与普通的类一样,包括继承之后,子类自动拥有父类非private的属性和方法等继承特性。


案例


public abstract class Animal
{
    String name;

    abstract void bray();
}

public class Dog extends Animal
{
    void bray() {
        System.out.println("汪汪汪");
    }
}

public class Cat extends Animal
{
    void bray() {
        System.out.println("喵喵喵");
    }
}

在抽象类Animal中,定义了一个抽象方法bray(),它的子类Dog、Cat在继承这个Animal后,就必须去实现这个方法。

2018/4/19 13:52:07 @Author:云都小生

猜你喜欢

转载自blog.csdn.net/Cloudkings/article/details/80003877