轩辕编程(Java第十二讲):Java类的抽象性和最终类

抽象类

        使用关键字abstract声明的类称为抽象类,使用abstract声明的成员方法称为抽象方法。抽象方法只有方法声明没有方法体,例如下面的func1就为抽象方法

        

public abstract class AbstractClassExample {

    protected int x;
    private int y;

    public abstract void func1();

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

如果一个类中包含抽象方法,那么这个类必须声明为抽象类。

抽象类和普通类最大的区别是,抽象类不能被实例化,只能被继承。

例如:AbstractClassExample ace=new  AbstractClassExample().这就是错误的

由于上述这个类中func1为抽象方法,所以类AbstractClassExample就得定为抽象类,添加abstract关键字

另外需要注意,构造方法、静态成员方法不能被声明为抽象方法

抽象类通常包含抽象方法,也可以不包含抽象方法。但是,包含抽象方法的类必须被声明为抽象类。如果一个类声明继承一个抽象类,它必须实现父类的所有抽象方法,否则该类必须声明为抽象类。

例如:

public class AbstractExtendClassExample extends AbstractClassExample {
    @Override
    public void func1() {
        System.out.println("func1");
    }
}

抽象类中,声明抽象方法是为子类的共同操作约定的一种方法声明;子类继承抽象类的抽象方法,继承了父类的约定,再根据自身的实际需要给出抽象方法的具体实现。不同的子类可有不同的方法实现。总之,抽象方法不仅使子类具有共同的行为能力,还能实现运行时多态,“一种声明,多种实现”。后续我们还会学习到接口,对于接口来说,接口内所有方法都需重写

最终类

使用关键字final声明的类称为最终类,最终类不能被继承,即不能有子类。

例如:public final class Math extendsObject//数学类,最终类

public class MyMath extends Math//语法错,最终类不能被继承

public final class Circle extends Ellipse//圆类,最终类,不能被继承

注意:抽象类不能被声明为最终类

使用final声明的成员方法称为最终方法。最终方法不能被子类覆盖。最终类中包含的都是最终方法。非最终类也可以包含最终方法。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值