Java中的抽象类

Posted tan90丶

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java中的抽象类相关的知识,希望对你有一定的参考价值。


  含有抽象方法的类,抽象方法即用abstract修饰的方法,即父类只知道其子类应该含有该方法,但无法知道子类如何实现这些方法
  抽象类限制规定子类必须实现某些方法,但不关注实现细节
  抽象类中可以包含普通方法(在Java中仍然为虚方法),也可以没有抽象方法
  抽象类无法用于实例化对象,但可以定义引用变量,以用于指定子类对象

 

参考代码:

抽象类Shape

package com.hao.practice;

public abstract class Shape {
    public abstract float perimeter();
    public abstract float area();
}
View Code

 

子类Circle

package com.hao.practice;

public class Circle extends Shape {

    static final float PI = 3.14f;
    float r = 0.0f;

    /*
     * 默认构造函数
     */
    public Circle() {
        super();
    }

    /*
     * 带参构造函数
     * @param r
     */
    public Circle(float r) {
        super();
        this.r = r;
    }

    /*
     * (非 Javadoc)
     * @see com.hao.practice.Shape#perimeter()
     */
    @Override
    public float perimeter() {
        // TODO 自动生成的方法存根
        return 2*PI*r;
    }

    @Override
    public float area() {
        // TODO 自动生成的方法存根
        return PI*r*r;
    }

}
View Code

 

子类Rectangle

package com.hao.practice;

public class Rectangle extends Shape {

    float a = 0.0f;
    float b = 0.0f;
    
    /**
     * 默认构造函数
     */
    public Rectangle() {
        super();
    }

    /**
     * 拷贝构造函数
     * @param a
     * @param b
     */
    public Rectangle(float a, float b) {
        super();
        this.a = a;
        this.b = b;
    }

    @Override
    public float perimeter() {
        // TODO 自动生成的方法存根
        return 2*a*b;
    }

    @Override
    public float area() {
        // TODO 自动生成的方法存根
        return a*b;
    }

}
View Code

 

以上是关于Java中的抽象类的主要内容,如果未能解决你的问题,请参考以下文章

Android 逆向类加载器 ClassLoader ( 类加载器源码简介 | BaseDexClassLoader | DexClassLoader | PathClassLoader )(代码片段

java中的抽象类(abstract)

如何修复 JAVA VS 代码中的实现错误,“必须实现继承的抽象类”

Java抽象类和接口

Java中的接口和抽象类

分清java中的接口和抽象类