举报投诉联系我们 手机版 热门标签 编程学
您的位置:编程学 > java抽象类与接口的区别 Java 抽象类

java抽象类与接口的区别 Java 抽象类

2023-05-25 16:18 Java教程

java抽象类与接口的区别 Java 抽象类

java抽象类与接口的区别

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...");  

    }  
}

Java 抽象类

Java教程 - Java抽象类


抽象类是抽象的想法或概念。例如,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 抽象类全部内容。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
相关文章
© 2024 编程学 bianchengxue.com 版权所有 联系我们
桂ICP备19012293号-7 返回底部