Java 抽象类

        对于面向对象编程来说,抽象是它的一大特征之一。在Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类。这两者有太多相似的地方,又有太多不同的地方。很多人在初学的时候会以为它们可以随意互换使用,但是实际则不然。今天我们就一起来学习一下Java中的抽象类    

      1、抽象类(abstract class):使用了abstract关键字所修饰的类叫做抽象类。抽象类无法实例化,也就是说,不能new出来一个抽象类的对象(实例)。

      2、抽象方法(abstract method):使用abstract关键字所修饰的方法叫做抽象方法。抽象方法需要定义在抽象类中。相对于抽象方法,之前所定义的方法叫做具体方法(有声明,有实现)。

      3、如果一个类包含了抽象方法,那么这个类一定是抽象类。

      4、如果某个类是抽象类,那么该类可以包含具体方法(有声明,有实现)。

      5、如果一个类中包含了抽象方法,那么这个类一定要声明成abstract class,也就是说,该类一定是抽象类;反之,如果某个类是抽象类,那么该类可以包含抽象方法,也可以包含具体方法。

      6、无论何种情况,只要一个类是抽象类,那么这个类就无法实例化。

      7、在子类继承父类(父类是个抽象类)的情况下,那么该子类必须实现该父类中所定义的所有抽象方法,否则,该子类需要声明一个abstract class。

        如图:

       

 解决办法:实现T(父类)中所有抽象方法或者R是抽象类(不能实例化)

        文字解说太枯燥,下面举个生活中的案例

public class Test {
    public static void main(String[] args) {
        Shape shape=new Triangle(10,6);
        int area=shape.computeArea();
        System.out.println("三角形的面积"+area);
        shape=new Rectangle(10,10);
        area=shape.computeArea();
        System.out.println("矩形面积"+area);
    }
}
abstract  class Shape{
    public abstract int computeArea();//计算形状面积
}
//三角形
class Triangle extends Shape{
    int width;
    int height;
    public  Triangle(int width,int height){//构造方法主要是完成初始化的操作
        this.width=width;
        this.height=height;
    }
    public  int computeArea(){
        return (width*height)/2;
    }
}
//矩形
class Rectangle extends Shape{
    int width;
    int height;
    public  Rectangle(int width,int height){//构造方法主要是完成初始化的操作
        this.width=width;
        this.height=height;
    }
    public int  computeArea(){
        return width*height;
    }
}

        结果:

三角形的面积30
矩形面积100

      8、一个类不能既是final,又是abstract的。因为abstract的主要目的是定义一种约定,让子类去实现这种约定,而final表示该类不能被继承,这样abstract希望该类可以被继承而final明确说明该类不能被继承,两者矛盾。因此一个类不能既是final的,又是abstract的。

        如图:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值