亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial programming >> java

Java 抽象类和抽象方法

Java 抽象类和抽象方法

在本教程中,我们将借助示例了解 Java 抽象类和方法。我们还将学习 Java 中的抽象。

Java 抽象类

Java 中的抽象类不能被实例化(我们不能创建抽象类的对象)。我们使用 abstract 关键字来声明一个抽象类。例如,

// create an abstract class
abstract class Language {
  // fields and methods
}
...

// try to create an object Language
// throws an error
Language obj = new Language(); 

抽象类可以同时具有常规方法和抽象方法。例如,

abstract class Language {

  // abstract method
  abstract void method1();

  // regular method
  void method2() {
    System.out.println("This is regular method");
  }
}

要了解非抽象方法,请访问 Java 方法。在这里,我们将学习抽象方法。


Java 抽象方法

没有主体的方法称为抽象方法。我们使用相同的 abstract 关键字来创建抽象方法。例如,

abstract void display();

这里,display() 是一种抽象方法。 display() 的主体 替换为 ; .

如果一个类包含一个抽象方法,那么这个类应该被声明为抽象的。否则会产生错误。例如,

// error
// class should be abstract
class Language {

  // abstract method
  abstract void method1();
}

示例:Java 抽象类和方法

虽然抽象类不能被实例化,但我们可以从中创建子类。然后我们可以使用子类的对象访问抽象类的成员。例如,

abstract class Language {

  // method of abstract class
  public void display() {
    System.out.println("This is Java Programming");
  }
}

class Main extends Language {

  public static void main(String[] args) {
    
    // create an object of Main
    Main obj = new Main();

    // access method of abstract class
    // using object of Main class
    obj.display();
  }
}

输出

This is Java programming

在上面的示例中,我们创建了一个名为 Language 的抽象类 .该类包含一个常规方法 display() .

我们创建了继承抽象类的 Main 类。注意声明,

obj.display();

这里,obj 是子类Main的对象 .我们使用对象 obj 调用抽象类的方法 .


实现抽象方法

如果抽象类包含任何抽象方法,那么从抽象超类继承的所有子类都必须提供抽象方法的实现。例如,

abstract class Animal {
  abstract void makeSound();

  public void eat() {
    System.out.println("I can eat.");
  }
}

class Dog extends Animal {

  // provide implementation of abstract method
  public void makeSound() {
    System.out.println("Bark bark");
  }
}

class Main {
  public static void main(String[] args) {

    // create an object of Dog class
    Dog d1 = new Dog();

    d1.makeSound();
    d1.eat();
  }
}

输出

Bark bark
I can eat.

在上面的例子中,我们创建了一个抽象类 Animal .该类包含一个抽象方法makeSound() 和一个非抽象方法 eat() .

我们继承了一个子类 Dog 来自超类 Animal .这里,子类 Dog 提供抽象方法 makeSound() 的实现 .

然后我们使用对象 d1 类调用方法makeSound()eat() .

注意 :如果 类不提供抽象方法 makeSound() 的实现 , 也应该被声明为抽象的。这是因为子类 Dog 继承 makeSound() 来自动物 .


访问抽象类的构造函数

抽象类可以有像普通类一样的构造函数。而且,我们可以使用 super 从子类访问抽象类的构造函数 关键词。例如,

abstract class Animal {
   Animal() {
      ….
   }
}

class Dog extends Animal {
   Dog() {
      super();
      ...
   }
}

在这里,我们使用了 super() Dog 的构造函数内部 访问 Animal 的构造函数 .

请注意,super 应该始终是子类构造函数的第一条语句。访问 Java super 关键字以了解更多信息。


Java 抽象

抽象类和方法的主要用途是在Java中实现抽象。

抽象是面向对象编程的一个重要概念,它允许我们隐藏不必要的细节,只显示需要的信息。

这使我们能够通过使用更简单、更高层次的想法省略或隐藏细节来管理复杂性。

抽象的一个实际例子可以是摩托车刹车。我们知道刹车的作用。当我们踩刹车时,摩托车就会停下来。然而,刹车的工作却一直瞒着我们。

隐藏刹车作用的主要好处是现在制造商可以为不同的摩托车实现不同的刹车,但是刹车的作用是一样的。

下面举个例子,帮助我们更好地理解Java抽象。

示例 3:Java 抽象

abstract class MotorBike {
  abstract void brake();
}

class SportsBike extends MotorBike {
    
  // implementation of abstract method
  public void brake() {
    System.out.println("SportsBike Brake");
  }
}

class MountainBike extends MotorBike {
    
  // implementation of abstract method
  public void brake() {
    System.out.println("MountainBike Brake");
  }
}

class Main {
  public static void main(String[] args) {
    MountainBike m1 = new MountainBike();
    m1.brake();
    SportsBike s1 = new SportsBike();
    s1.brake();
  }
}

输出

MountainBike Brake
SportsBike Brake

在上面的例子中,我们创建了一个抽象超类 MotorBike .超类 MotorBike 有一个抽象方法 brake() .

brake() 方法不能在 MotorBike 中实现 .这是因为每辆自行车都有不同的刹车装置。所以,MotorBike 的所有子类 会有不同的 brake() 实现 .

所以,brake()的实现 在 摩托车 一直隐藏。

在这里,MountainBike 自己实现 brake()SportsBike 自己实现 brake() .

注意 :我们也可以使用接口来实现Java中的抽象。要了解更多信息,请访问 Java 接口。


要记住的关键点


java

  1. C#抽象类和方法
  2. Java 变量和文字
  3. Java 类和对象
  4. Java final 关键字
  5. Java instanceof 运算符
  6. Java 嵌套和内部类
  7. Java 嵌套静态类
  8. Java 匿名类
  9. Java 单例类
  10. Java ObjectOutputStream 类
  11. Java 泛型
  12. Java 文件类