> Java > Java시작하기 > Java 객체 지향 다형성

Java 객체 지향 다형성

王林
풀어 주다: 2019-11-29 15:02:39
앞으로
1875명이 탐색했습니다.

Java 객체 지향 다형성

다형성에 대한 간단한 이해:

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:csdn.net
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿