다형성에 대한 간단한 이해:
student 클래스는 Person 클래스를 상속하고, 학생 클래스의 객체는 학생 클래스와 person 클래스 모두입니다.
다형성에는 두 가지 형태의 표현이 있습니다:
1 .다형성의 메소드:
(1) 메소드 오버로딩: 동일한 메소드라도 전달된 매개변수의 유형이나 개수에 따라 다른 기능을 구현할 수 있습니다.
(2) 메소드 덮어쓰기: 동일한 메소드라도 구현 방식에 따라 다르게 구현될 수 있습니다. subclasses
2. 객체의 다형성:
상위 클래스와 하위 클래스 인스턴스 간의 변환 처리
(1) 객체 상향 변환: 상위 클래스 상위 클래스 인스턴스 = 새 하위 클래스 인스턴스() 자동으로 변환 완료
(2) ) 객체 하향 변환: 하위 클래스 하위 클래스 인스턴스 = 새(하위 클래스) 상위 클래스 인스턴스(); 변환을 강제로 완료합니다.
관련 비디오 튜토리얼 공유: 무료 Java 비디오 튜토리얼
다형성의 최종 표현:
1 . 상위 클래스에 대한 참조 변수는 하위 클래스 객체를 가리킬 수 있습니다
2. 다형성의 전제는 하위-부모 클래스 관계 또는 클래스 구현 인터페이스 관계가 있어야 한다는 것입니다. 그렇지 않으면 호출 시 다형성이 달성될 수 없습니다. 다형성 상위 클래스 참조 변수를 사용하는 메소드, 하위 클래스의 다시 작성된 메소드가 호출됩니다
다형성 멤버 변수:1. 컴파일 시 참조: 상위 클래스에 해당 변수가 없는 경우. 그렇지 않으면 컴파일이 실패합니다.
2. 실행 시 상위 클래스의 변수 값은 컴파일 및 실행 중에 상위 클래스에 따라 달라집니다. 메소드:
1. 컴파일할 때 상위 클래스에 해당 메소드가 있는지 참조하세요. 그렇지 않으면 컴파일이 실패합니다. 실행 중인 것은 하위 클래스의 재정의된 메서드입니다.멤버 메서드 컴파일은 상위 클래스를 보고, 실행은 하위 클래스를 살펴봅니다.객체의 두 가지 변환 방법 이해:
1 객체 상향 변환:
상향 변환 후 하위 클래스 개체는 상위 클래스가 소유한 메서드만 호출할 수 있으며 하위 클래스만 소유한 메서드는 호출할 수 없습니다. 다형성은 상향 변환을 통해 달성됩니다.
2. 상향 변환 후 객체를 변환하려는 경우 하위 클래스에만 고유하지만 상위 클래스에서는 사용할 수 없는 메서드를 사용하려면 객체의 다운캐스팅을 사용해야 합니다.
코드 데모: public class Person {
public void Eat(){
//在person类中定义一个吃的抽象方法
}
}
public class Student extends Person{
public void Eat(){
System.out.println("学生吃学校食堂");//重写父类中的抽象方法
}
public void Learning()
{
System.out.println("学生在学习");//定义一个student类特有的方法
}
}
public class Test {
public static void main(String[] args) {
// TODO 自动生成的方法存根
Person p=new Student();//通过向上转型定义一个p对象
p.Eat();//这是子父类共有的方法
p.Learning();
}
}
이 코드에서 우리는 메소드는 업캐스팅을 통해 하위 클래스에 고유하지만 다음 프롬프트가 나타납니다. 그림:
상위 클래스에 정의된 학습 메소드가 없습니다. 하지만 이때 하위 클래스의 고유 메소드를 호출해야 합니다. 이때 하향 변환을 구현해야 합니다.
보충 코드는 다음과 같습니다.Student stu=(Student)p;//将p对象向下转型实现方法调用 stu.Learning();더 많은 관련 튜토리얼을 보려면 다음을 방문하세요.
Java Quick Start
위 내용은 Java 객체 지향 다형성의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!