abstract public class car
{
abstract void drive();
}
위 코드 스 니펫과 마찬가지로 Java의 추상 메소드의 목적은 무엇입니까? 정의에 따르면 내가 수집 할 수있는 것부터 그들은 시체를 가질 수 없습니다.추상 메소드의 목적은 무엇입니까?
abstract public class car
{
abstract void drive();
}
위 코드 스 니펫과 마찬가지로 Java의 추상 메소드의 목적은 무엇입니까? 정의에 따르면 내가 수집 할 수있는 것부터 그들은 시체를 가질 수 없습니다.추상 메소드의 목적은 무엇입니까?
동일한 추상 클래스를 구현하게 만들면 이러한 것들은 모두 높은 수준에서 비슷하지만, 그들이하는 일의 세부 사항이 다릅니다. 추상적 인 방법은 "이 수업을 확장하는 모든 것들이해야 할 일이 있지만, 정확히 어떻게 할 것인가를 지정하는 것입니다."라고 말합니다.
인터페이스를 상속 한 비 추상 클래스를 강제로 인터페이스와 유사한 방식으로 구현합니다.
추상 메서드는이 abstract 클래스의 서브 클래스에서 구현되어야합니다. 예를 들어 클래스 이름은 Shape
이고 draw()
메소드가 있습니다. Shape
클래스의 경우이 메서드를 구현할 수 없으므로 Shape
을 그리는 방법을 모르기 때문에 abstract
이됩니다. 그리고 Triangle
클래스를 만들 때 Shape
클래스를 만들 때 - Triangle
을 그리는 방법은 확실하고 draw()
메서드를 구현할 수 있습니다. 희망이 도움이됩니다.
그건 하나의 측면입니다. 또 다른 하나는 일반적으로 셰이프에 대한 지식을 갖는 것입니다. 예를 들어 Collection을 일종의 Collection에 넣는 경우를 예로들 수 있습니다. 현재 처리중인 Shape이 삼각형, 원 또는 다른 어떤 것이라도 "draw()"라는 메서드가 있습니다. 이것에 대한 이해를 높이는 한 가지 더 : 질문에서 추상 클래스는 차라기보다는 "차량"이라고 할 수 있습니다. 그리고 "자동차"는 구현 중 하나 일 수 있습니다. –
메서드 추상을 선언하면 구현이 제공되지 않지만 메서드에 구현을 제공하기 위해 car
클래스를 확장하는 구체적인 클래스가 필요하게됩니다. 예 :
abstract public class Car {
abstract void drive();
}
public class Audi extends Car {
void drive() {
System.out.println("I'm an Audi.");
}
}
public class Volvo extends Car {
void drive() {
System.out.println("I'm a Volvo.");
}
}
구현을 제공하지 않으면 컴파일 오류가 발생합니다. 모두 Audi
및 Volvo
의 인스턴스가 런타임에 Car
이 예상되는 경우, 서로 다른 행동을 막을 수있는 배치 할 수 있기 때문에 (이 다형성이라고합니다) 당신은 쉽게 그것을 볼 수있는이 예에서 이제
, :
void driveCar(Car car) {
car.drive();
}
void testDrive() {
driveCar(new Audi()); // prints I'm an Audi
driveCar(new Volvo()); // prints I'm a Volvo
}
초록은 "drive"와 같이 나열된 모든 메소드를 구현해야하는 "모양"클래스로 작동하거나 프로그램 컴파일시 오류가 표시됩니다. 이러한 종류의 클래스는 인스턴스화 할 수 없으므로이 클래스를 상속하고 모든 추상 메서드를 구현해야합니다. 추상을 사용하는 장점은 추상 클래스를 모양 클래스로 사용할 수 있다는 것입니다.이 클래스는 메소드를 다시 작성하지 않고도 이미 클래스에 상속 할 수 있습니다. 이 메소드를 구현해야하기 때문에 구현과 재 작성을 혼동하지 마십시오. 예 : 당신은 동물 클래스가 : 당신이 상속하는 경우
abstract public class Animal{
abstract void eat();
abstract void walk();
}
그래서, 자동으로이 메소드를 구현해야 할 것이다. 아래를 참조하십시오 :
public class Horse extends Animal{
void eat() { //place the eating code }
void walk() { /// place the walking code }
}
희망을 이해하십시오!
죄송합니다 ... 내 투표 마감이 잘못되었습니다. –