抽象类是声明为抽象的类,可以具有抽象或非抽象方法。抽象类不能被实例化。它可以由子类扩展以实现抽象方法并使用或覆盖具体方法。
抽象方法是没有实现的方法,即它没有任何人。
abstract class Shape{ public abstract double calculateArea(); }
让我们在示例的帮助下理解它。你有 Shape 类,它有一些方法,如 draw()、calcualteArea() 等。绘制一个形状对于所有形状都是常见的,但每个形状的 calculateArea() 是不同的。
例如:
对于矩形,它将计算为长度 宽度,对于圆形,它将是 pi 半径^2。
因此,对于上述行为,我们将在 shape 类中实现 draw() 方法,并将创建 calcualteArea() 作为抽象方法。因此,如果您有一些常见的行为和一些特定的行为,请将您的类抽象化。
让我们创建一个抽象类作为 Shape 和 Rectangle,Circle 类作为具体类。
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(); }
你会得到编译错误:
如果类中有抽象方法,则类必须在java中声明为抽象类
案例3:可以同时声明class为final和abstract吗?
回答:
不,您不能同时将类声明为最终类和抽象类。Final 意味着没有其他类可以扩展该类,而 Abstract 意味着 Class 必须由任何其他类扩展。
案例4:可以**在java中**实例化抽象类吗?
不,你不能实例化抽象类。
你不能在java中实例化抽象类
案例5:如果你在java中扩展一个抽象类,你需要实现那个类的所有抽象方法吗?
是的,你需要实现超类的所有抽象方法,除非子类也是java中的抽象类。
原文链接:https://codingdict.com/