Java의 가상 함수

王林
풀어 주다: 2024-08-30 15:35:01
원래의
398명이 탐색했습니다.

객체 지향 프로그래밍 언어인 Java는 상속, 다형성, 업캐스팅 등과 같은 기능을 지원합니다. 따라서 Java의 OOP는 객체, 클래스 및 함수를 다룹니다. 가상 함수는 Java에서 런타임 다형성을 용이하게 하는 멤버 함수 중 하나입니다. 이 기사에서는 Java의 가상 함수에 대해 설명합니다.

정의:가상 함수는 특별한 함수는 아니지만 메서드 재정의 메커니즘을 용이하게 하는 멤버 함수입니다. 즉, OOP에서 상위 클래스의 가상 함수는 유형은 동일하지만 기능이 다른 하위 클래스에 의해 재정의될 수 있는 함수입니다.

광고 이 카테고리에서 인기 있는 강좌 JAVA MASTERY - 전문 분야 | 78 코스 시리즈 | 15가지 모의고사

무료 소프트웨어 개발 과정 시작

웹 개발, 프로그래밍 언어, 소프트웨어 테스팅 등

구문:Java의 가상 함수의 경우 주석이 포함된 Java의 기본 구문을 따라야 합니다. 가상 기능에 대한 재정의 메커니즘을 구현하려면 여기에서 @Override 주석을 사용하여 재정의하려는 가상 기능을 구체적으로 지적할 수 있지만 필수는 아닙니다.

Java에서 가상 함수는 어떻게 작동하나요?

이제 가상 기능이 어떻게 작동하는지 살펴보겠습니다. 부모 유형 참조를 통해 자식 클래스의 재정의된 메서드를 호출할 때 개체의 유형이나 참조는 호출될 메서드를 나타냅니다. 이 결정의 결론은 컴파일 후 런타임 중에 발생합니다. 따라서 가상 함수의 기능은 동일한 유형의 상속된 하위 클래스에 의해 재정의됩니다.

가상 함수 관련 몇 가지 사항:

  • 하위 클래스와 상위 클래스의 함수는 이름과 매개변수가 동일해야 합니다.
  • IS-A관계는 필수(상속)입니다.
  • 상위 클래스의 비공개 메서드를 재정의할 수 없으므로 가상 함수는 비공개일 수 없습니다.
  • 가상 함수는 Final 메서드를 재정의할 수 없으므로 Final로 명시할 수 없습니다.
  • 가상 함수는 정적 메서드를 재정의할 수 없으므로 정적이라고 명시할 수 없습니다.

Java의 가상 함수 예시

여기서 가상 함수의 몇 가지 코드 예제를 논의하겠습니다.

예시 #1

이 예에서는 가상 함수 showMe()가 연결된 개체의 참조에 따라 어떻게 다른 텍스트를 표시하는지 보여줍니다. "Head" 유형과 연관되면 상위 클래스의 메시지를 표시합니다. "Subordinate" 유형과 연계되면 하위 클래스의 메시지를 보여줍니다.

코드:

class Head { public void showMe() { System.out.println("I am Head"); } } class Subordinate extends Head { @Override public void showMe() { System.out.println("I am Subordinate "); } } public class VirtualFuntionDemo { public static void main(String args[]) { Head superObject = new Head(); superObject.showMe(); //method of super class or parent class is called Head subObject = new Subordinate(); // upcasting subObject.showMe();//method of sub class or child class is called by Parent reference, this is called "Virtual function" Subordinate subObject2 = new Subordinate(); subObject2.showMe(); //method of sub class or child class is called } }
로그인 후 복사

출력:

Java의 가상 함수

예시 #2

다단계 상속의 경우 가상 함수의 예를 들어보겠습니다. 이 예에서는 두 가지 수준의 상속이 고려됩니다. 이 예에서는 가상 함수 관리()가 연결된 개체 유형에 따라 서로 다른 메시지를 표시하는 방법을 보여줍니다. "State" 유형과 연결되면 상위 클래스의 메시지가 표시됩니다. "District" 유형과 연관되면 해당 하위 클래스의 메시지를 표시합니다. 다시 두 번째 상속 수준에서 "Municipality" 유형과 연결되면 상위 클래스의 하위 클래스인 "District" 클래스의 메시지를 표시합니다.

코드:

class State{ void administartion() { System.out.println("This is under state govt."); } } class District extends State{ void administartion(){ System.out.println("This is under District Magistrate"); } } class Municipality extends District{ void administartion(){ System.out.println("This is under Mayor "); } } public class VirtualFunctionDemo2 { public static void main(String args[]){ State superObject=new State (); State subObject=new District (); State sub2Object=new Municipality (); superObject. administartion (); subObject.administartion (); // run time polymorphism occurs in virtual function happening in first level of heritance sub2Object.administartion (); // run time polymorphism occurs in virtual function happening in 2nd level of heritance } }
로그인 후 복사

출력:

Java의 가상 함수

예시 #3

다단계 상속의 경우 런타임 다형성의 또 다른 예를 들어보겠습니다. 이 예에서는 세 가지 수준의 상속이 고려됩니다. 이 예에서는 가상 함수 whoami()가 연결된 개체 유형에 따라 어떻게 다른 기능을 표시하는지 보여줍니다. "Cars" 유형과 연결되면 상위 클래스의 메시지가 표시됩니다. "SUV" 유형과 연관되면 해당 하위 클래스의 메시지를 표시합니다. 다시 두 번째 상속 수준에서 "MPV" 유형과 연결되면 상위 클래스인 "SUV" 클래스의 하위 클래스에서 보낸 메시지를 표시합니다. 세 번째 상속 수준에서는 "Hatchback" 유형과 연결될 때 상위 클래스의 하위 클래스인 "MPV" 클래스의 메시지를 표시합니다.

코드:

class Cars{ void whoami() { System.out.println("This is Car"); } } class SUV extends Cars{ void whoami(){ System.out.println("This is SUV"); } } class MPV extends SUV{ void whoami(){ System.out.println("This is MPV"); } } class Hatchback extends MPV{ void whoami(){ System.out.println("This is hatchback"); } } public class VirtualFunctionDemo3 { public static void main(String args[]){ Cars superObject=new Cars(); Cars subObject=new SUV(); // object of child type : 1st level heritance Cars sub2Object=new MPV(); // object of child type : 2nd level heritance Cars sub3Object=new Hatchback(); // object of child type : 3rd level heritance superObject.whoami(); subObject.whoami(); //run time polymorphism occurs in virtual function happening in first level of heritance sub2Object.whoami(); //run time polymorphism occurs in virtual function happening in second level of heritance sub3Object.whoami(); //run time polymorphism occurs in virtual function happening in third level of heritance } }
로그인 후 복사

출력:

Java의 가상 함수

결론

이것으로 "Java의 가상 함수" 주제에 대한 학습을 마칩니다. 위의 예제에서 언급된 코드를 Java 컴파일러에서 직접 작성하고 출력을 확인하십시오. 코드를 직접 작성하지 않으면 코드 학습이 불완전합니다.

위 내용은 Java의 가상 함수의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!