第三章java中的抽象类


抽象类是声明为抽象的类,可以具有抽象或非抽象方法。抽象类不能被实例化。它可以由子类扩展以实现抽象方法并使用或覆盖具体方法。

java中的抽象方法

抽象方法是没有实现的方法,即它没有任何人。

abstract class Shape{
public abstract double calculateArea(); }

java什么时候需要抽象类?

让我们在示例的帮助下理解它。你有 Shape 类,它有一些方法,如 draw()、calcualteArea() 等。绘制一个形状对于所有形状都是常见的,但每个形状的 calculateArea() 是不同的。

例如:

对于矩形,它将计算为长度 宽度,对于圆形,它将是 pi 半径^2。

因此,对于上述行为,我们将在 shape 类中实现 draw() 方法,并将创建 calcualteArea() 作为抽象方法。因此,如果您有一些常见的行为和一些特定的行为,请将您的类抽象化。

让我们创建一个抽象类作为 Shape 和 Rectangle,Circle 类作为具体类。

java中抽象类的例子:

package org.arpit.java2blog;

abstract class Shape{

    public void draw()
    {
        System.out.println("Draw method in shape class");
    }

    public abstract double calculateArea();
}

class Rectangle extends Shape
{   
    double length;
    double breadth;


    public Rectangle(double length, double breadth) {
        super();
        this.length = length;
        this.breadth = breadth;
    }

    @Override
    public double calculateArea() {     
        return length*breadth;
    }
}

class Circle extends Shape
{
    double radius;

    public Circle(double radius) {
        super();
        this.radius = radius;
    }

    @Override
    public double calculateArea() {
        return 3.14*radius*radius;
    }
}

创建一个名为“AbstractClassMain”的主类

package org.arpit.java2blog;

public class AbstactClassMain {

    public static void main(String[] args)
    {
        System.out.println("============================");
        Rectangle rec=new Rectangle(3, 4);
        rec.draw();
        System.out.println("Area of rectangle is "+rec.calculateArea());
        System.out.println("============================");

        Circle cir=new Circle(3);
        cir.draw();
        System.out.println("Area of circle is "+cir.calculateArea());
        System.out.println("============================");
    }
}
============================
Draw method in shape class
Area of rectangle is 12.0
============================
Draw method in shape class
Area of circle is 28.259999999999998
============================

让我们考虑一些案例来更好地理解java中的抽象类: 案例1:类中可能有零抽象方法,但您仍然可以将类声明为抽象类。 答: 是的,即使类中没有任何抽象方法,也可以将类声明为抽象类。 例如:

abstract class Shape{

public void draw() { System.out.println(“Draw method in shape class”); } }

案例2:类包含抽象方法,但可以不将类声明为抽象吗? 答: 不,必须将类声明为 Abstract,但它包含抽象方法。

class Shape{

    public void draw()
    {
        System.out.println("Draw method in shape class");
    }

    public abstract double calculateArea();
}

你会得到编译错误:

  • 第 1 行:“Shape 类型必须是抽象类才能定义抽象方法”
  • 第 7 行:“Shape 类型中的抽象方法 calculateArea 只能由抽象类定义”

如果类中有抽象方法,则类必须在java中声明为抽象类

案例3:可以同时声明class为final和abstract吗?

回答:

不,您不能同时将类声明为最终类和抽象类。Final 意味着没有其他类可以扩展该类,而 Abstract 意味着 Class 必须由任何其他类扩展。

案例4:可以**在java中**实例化抽象类吗?

回答:

不,你不能实例化抽象类。

你不能在java中实例化抽象类

案例5:如果你在java中扩展一个抽象类,你需要实现那个类的所有抽象方法吗?

回答:

是的,你需要实现超类的所有抽象方法,除非子类也是java中的抽象类。


原文链接:https://codingdict.com/