Java抽象类和接口都是用来定义类的行为的重要工具,但它们之间有一些重要的区别。
首先,Java抽象类是一种特殊的类,它可以包含抽象方法和非抽象方法。而接口只能包含抽象方法。此外,Java抽象类可以有静态成员变量和静态方法,而接口不能有这些成员。
其次,Java抽象类不能用来实例化对象,而必须用其子类来实例化。相反,接口不能用来实例化对象;它必须用实现该接口的类来实例化对象。
此外,Java中的一个类可以同时扩展一个父类和实现多个接口。但是一个 Java 的子类不能同时扩展多个 Java 抽象父类。
public abstract class Animal { public abstract void eat(); public void sleep() { System.out.println("Sleeping..."); } } public interface Flyable { public void fly(); } public class Bird extends Animal implements Flyable { @Override public void eat() { System.out.println("Eating..."); } @Override public void fly() { System.out.println("Flying..."); } }
抽象类是抽象的想法或概念。例如,int数据类型是一个具体的数据类型,double是另一个数据类型具体数据类型。 他们都是数字。 这里数字是一个抽象的概念。形状是另一个例子。 我们可以有备用,矩形或三角形或圆形。 他们都是具体的,而形状是一个抽象类。
在Java中,我们使用抽象类来定义抽象概念。 抽象概念必须有一些抽象方面。 例如,抽象概念是Shape,而抽象方面是如何计算面积。抽象概念在Java中变成抽象类,抽象方面成为抽象方法。
您可以要求通过指定子类来重写某些方法抽象类型修饰符。要声明抽象方法,请使用以下一般形式:
abstract type name(parameter-list);
抽象方法没有方法体。任何包含一个或多个抽象方法的类也必须声明为抽象。
abstract class MyAbstractClass{ abstract type name(parameter-list); }
这里是一个抽象类,后面是一个实现其抽象方法的类。
abstract class MyAbstractClass { abstract void callme(); void callmetoo() { System.out.println("This is a concrete method."); } } class B extends MyAbstractClass { void callme() { System.out.println("B"s implementation of callme."); } } public class Main { public static void main(String args[]) { B b = new B(); b.callme(); b.callmetoo(); } }
输出:
下面的代码将 Shape
类定义为abstract。 shape 类有抽象方法称为area()。 Rectangle
类扩展抽象类 Shape
并为其自身实现area()方法。
abstract class Shape { double height; double width; Shape(double a, double b) { height = a; width = b; } abstract double area(); } class Rectangle extends Shape{ Rectangle(double a, double b) { super(a, b); } double area() { System.out.println("Inside Area for Rectangle."); return height * width; } } class Triangle extends Shape{ Triangle(double a, double b) { super(a, b); } double area() { System.out.println("Inside Area for Triangle."); return height * width / 2; } } public class Main { public static void main(String args[]) { Rectangle r = new Rectangle(10, 5); Triangle t = new Triangle(10, 8); Shape figref; figref = r; System.out.println("Area is " + figref.area()); figref = t; System.out.println("Area is " + figref.area()); } }
输出:
Java教程 - 什么是Java中的泛型类型术语泛型意味着参数化类型。使用泛型,可以创建与不同类型的数据一起使用的单个类。在参数化...
JPA教程 -JPA列唯一可空例子我们可以设置映射列是否可以具有空值或者列是否应该具有唯一值。@Column(unique=true, nullable=fals...
JPA教程 -JPA日期映射到时间戳示例我们可以使用以下代码将Java Date类型值映射到TIMESTAMP类型数据库表列。@Temporal(TemporalTy...