산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial programming >> 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 메소드를 방문하십시오. 여기에서는 추상 메서드에 대해 알아보겠습니다.

<시간>

자바 추상 ​​메소드

본체가 없는 메소드를 추상 메소드라고 합니다. 동일한 abstract을 사용합니다. 추상 메서드를 만드는 키워드입니다. 예를 들어,

abstract void display();

여기, display() 추상적인 방법이다. display()의 본문 ;으로 대체됨 .

클래스에 추상 메서드가 포함되어 있으면 클래스를 추상으로 선언해야 합니다. 그렇지 않으면 오류가 발생합니다. 예를 들어,

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

  // abstract method
  abstract void method1();
}
<시간>

예:자바 추상 ​​클래스 및 메소드

추상 클래스를 인스턴스화할 수는 없지만 추상 클래스에서 하위 클래스를 만들 수 있습니다. 그런 다음 하위 클래스의 개체를 사용하여 추상 클래스의 멤버에 액세스할 수 있습니다. 예를 들어,

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를 상속받았습니다. 슈퍼클래스 동물에서 . 여기에서 하위 클래스 Dog 추상 메서드 makeSound()에 대한 구현을 제공합니다. .

그런 다음 d1 개체를 사용했습니다. makeSound() 메서드를 호출하는 클래스 및 eat() .

참고 : 클래스는 추상 메서드 makeSound()의 구현을 제공하지 않습니다. , 추상화로도 선언해야 합니다. 이는 하위 클래스 Dog 때문입니다. makeSound() 상속 동물 .

<시간>

추상 클래스 생성자 액세스

추상 클래스는 일반 클래스와 같은 생성자를 가질 수 있습니다. 그리고 super을 사용하여 하위 클래스에서 추상 클래스의 생성자에 액세스할 수 있습니다. 예어. 예를 들어,

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

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

여기에서는 super()을 사용했습니다. Dog 생성자 내부 Animal의 생성자에 액세스하기 위해 .

super 항상 하위 클래스 생성자의 첫 번째 명령문이어야 합니다. 자세히 알아보려면 Java 슈퍼 키워드를 방문하십시오.

<시간>

자바 추상화

추상 클래스 및 메서드의 주요 용도는 Java에서 추상화를 달성하는 것입니다.

추상화는 불필요한 세부 사항을 숨기고 필요한 정보만 표시할 수 있게 해주는 객체 지향 프로그래밍의 중요한 개념입니다.

이를 통해 더 간단하고 높은 수준의 아이디어로 세부 사항을 생략하거나 숨김으로써 복잡성을 관리할 수 있습니다.

추상화의 실제 예는 오토바이 브레이크가 될 수 있습니다. 우리는 브레이크가 하는 일을 알고 있습니다. 브레이크를 밟으면 오토바이가 멈춥니다. 그러나 브레이크의 작동은 우리에게 숨겨져 있습니다.

브레이크 작동을 숨김으로써 얻을 수 있는 가장 큰 장점은 이제 제조업체가 오토바이에 따라 브레이크를 다르게 구현할 수 있지만 브레이크가 하는 일은 동일하다는 것입니다.

Java 추상화를 더 잘 이해하는 데 도움이 되는 예를 들어 보겠습니다.

예시 3:자바 추상화

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() 자체 구현 및 스포츠바이크 brake() 자체 구현 .

참고 :Java에서 추상화를 달성하기 위해 인터페이스를 사용할 수도 있습니다. 자세한 내용은 Java 인터페이스를 참조하십시오.

<시간>

기억해야 할 요점


java

  1. C# 추상 클래스 및 메서드
  2. 자바 변수와 리터럴
  3. 자바 클래스와 객체
  4. 자바 최종 키워드
  5. 자바 instanceof 연산자
  6. Java 중첩 및 내부 클래스
  7. 자바 중첩 정적 클래스
  8. 자바 익명 클래스
  9. 자바 싱글톤 클래스
  10. 자바 ObjectOutputStream 클래스