먼저 세 가지 주요 기능의 정의에 대해 간단히 이야기 해 봅시다.
캡슐화 : 객체의 속성 및 구현 세부 사항을 숨기고 인터페이스를 외부 세계에만 노출시키고 프로그램의 읽기 및 수정 속성의 액세스 수준을 제어합니다. 추상화 된 데이터와 동작 (또는 기능)을 결합하여 유기 전체를 형성합니다. 즉, 데이터와 기능이 클래스의 구성원 인 "클래스"를 형성하기 위해 데이터를 유기적으로 결합합니다. 캡슐화의 목적은 보안을 향상시키고 프로그래밍을 단순화하는 것입니다. 사용자는 특정 구현 세부 정보를 이해할 필요가 없지만 외부 인터페이스, 특정 액세스 권한을 통해 클래스 멤버를 사용합니다. 캡슐화의 기본 요구 사항은 다음과 같습니다. 모든 속성을 민영화하고 각 속성에 대한 Getter 및 Setter 메소드를 제공합니다. 매개 변수가있는 생성자가있는 경우 매개 변수가없는 생성자를 작성해야합니다. 개발 중에는 이미 서면 수업을 테스트해야하므로 때로는 Tostring 방법을 다시 작성할 수 있지만 필요하지 않습니다.
상속 : 상속을 통해 코드 재사용을 활성화합니다. Java의 모든 클래스는 Java.lang.object 클래스를 직간접 적으로 상속하여 얻습니다. 상속 클래스를 하위 클래스라고하며 상속 클래스를 부모 클래스라고합니다. 서브 클래스는 액세스 권한이 비공개 인 상위 클래스에서 멤버 변수와 메소드를 상속 할 수 없습니다. 서브 클래스는 상위 클래스의 메소드와 이름 멤버 변수를 상위 클래스와 동일한 이름으로 이름을 상체 할 수 있습니다. 그러나 Java는 다중 상속, 즉 클래스가 여러 슈퍼 클래스에서 파생 될 수있는 능력을 지원하지 않습니다. 개발에서 상속 관계가 최소화되며 이는 프로그램의 결합 정도를 줄이기 위해 수행됩니다.
다형성 : 다형성은 설계 시간 다형성 및 런타임 다형성으로 나뉩니다. 예를 들어, 과부하를 설계 시간 다형성이라고도합니다. 방법을 재정의하거나 상속하기 위해 Java 런타임 시스템은 런타임 다형성이라고하는 방법을 호출하는 인스턴스 유형을 기반으로 호출 할 방법을 결정합니다. 요컨대, 객체 지향 설계의 전형적인 특성은 상속, 캡슐화 및 다형성이며, 이는 객체 지향의 인기의 핵심이기도합니다.
패키지
Java의 클래스 속성에 대한 액세스 권한의 기본값은 비공개가 아닙니다. 이 속성의 메소드를 숨기려면 개인 수정자를 추가하여 클래스에 대한 액세스 만 제한 할 수 있습니다.
클래스의 개인 속성의 경우 개인 속성의 작동 및 보안을 보장하기 위해 개인 속성에 액세스하기 위해 한 쌍의 메소드 (getxxx, setxxx ())가 제공되어야합니다.
방법의 캡슐화, 공개의 공개, 숨겨진 숨겨진.
자바 상속
상속은 공통 특성을 가진 여러 유형의 물건을 한 클래스로 추상화하는 것입니다.
Java의 상속은 확장 키워드를 사용해야하며 Java 가운데 손가락은 단일 상속을 허용합니다. 즉, 클래스는 하나의 부모 클래스 만 가질 수 있습니다.
생성자는 상속받을 수 없습니다 .
Java 방법을 재정의합니다
서브 클래스에 동일한 매개 변수 목록을 상위 클래스에서 액세스 할 수있는 동일한 이름과 동일한 이름과 동일한 이름을 반환하는 메소드가있는 경우, 상위 클래스에서 상속 된 메소드가 덮어 씁니다.
Super () 키워드
super ()는 서브 클래스의 생성자가 부모 클래스의 생성자를 호출 할 때 Super ()가 생성자의 첫 번째 문장에만있을 수 있음을 의미합니다.
자바의 다형성
두 가지 다형성 메커니즘이 있습니다 : 컴파일 타임 다형성과 런타임 다형성
1. 메소드 과부하 : 오버로드는 동일한 클래스에서 동일한 이름을 가진 여러 메소드를 말하지만 이러한 메소드마다 매개 변수가 다릅니다. , 컴파일 타임에 호출 할 방법을 결정할 수 있습니다.이 방법은 컴파일 타임 다형성입니다.
2. 메소드 재정의 : 서브 클래스는 상위 클래스의 메소드를 무시할 수 있으므로 동일한 메소드가 상위 클래스 및 서브 클래스에서 다른 증상이 나타납니다. Java 언어에서, 기본 클래스의 참조 변수는 기본 클래스의 인스턴스 객체뿐만 아니라 서브 클래스의 인스턴스 객체를 가리킬 수 있습니다. 마찬가지로 인터페이스의 참조 변수는 구현 클래스의 인스턴스 객체를 가리킬 수 있습니다.
public class a {public String show (d obj) {return ( "a and d");} public String show (a obj) {return ( "a and a");}} public class b는 {public string show (b obj) {return ( "b and b");} public string show (a return (return)}}}}}}}}}}}}}}}}}; B {{} public class test {public static void main (string [] args) {a a1 = new a (); a a2 = new b (); b b = new b (); c c = new c (); d d = new d (); System.out.println ( "1-" + a1.show (b)); System.out.println ( "2--" + a1.show (c)); System.out.println ( "3-" + a1.show (d)); System.out.println ( "4--" + a2.show (b)); System.out.out.out.out.out.out.out.out.out.out.println ( "5--" a2.show (c)); system.out.println ( "6--" + a2.show (d)); System.out.println ( "7--" + B.show (b)); System.out.println ( "8-" + B.show (c)); System.out.println ( "9-" + B.Show (d)); }} 1-A 및 A2- A 및 A3- A 및 A3 및 D4-B 및 A5-B 및 A6-A 및 D7-B 및 B8-B 및 B9-A 및 D 슈퍼 클래스 객체가 서브 클래스 객체를 참조하는 변수를 지칭하는 경우, 참조 변수의 유형보다는 참조 된 객체의 유형이 멤
예제를 사용 하여이 문장의 의미를 설명하자 : a2.show (b);
여기서 A2는 B 객체를 지칭하는 유형 A의 기준 변수입니다. 따라서 위의 문장에 따르면, 누가 호출 할 방법을 결정할 B가 있음을 의미하므로 A2. 쇼우 (B)는 B에서 Show (B OBJ)를 호출해야하며 결과는 "B와 B"여야하지만 이전 실행 결과와 다른 이유는 무엇입니까? 여기서 우리는 다음 문장을 무시하지만 "여기에 불리는 방법은 슈퍼 클래스로 정의되어야합니다", show (b obj)도 클래스 A에 존재합니까? 전혀 존재하지 않습니다! 그래서이 문장은 여기에 적용되지 않습니까? 그래서이 문장이 잘못 되었습니까? 아니요! 실제로,이 문장은 또한이 문장을 암시합니다. 상속 체인에서 호출 방법의 우선 순위에 따라 여전히 확인해야합니다. 그렇기 때문에 클래스 A에서 Show (A OBJ)를 찾는 이유는 동시에 B가 메소드를 무시하기 때문에 클래스 B의 메소드를 호출하면 클래스 A의 메소드가 호출됩니다.
위의 것은 Java 캡슐화, 상속 및 다형성의 세 가지 주요 특징을 이해하는 것입니다. 나는 그것이 당신에게 도움이되기를 바랍니다. 궁금한 점이 있으면 메시지를 남겨 주시면 편집자가 제 시간에 답장을 드리겠습니다. Wulin.com 웹 사이트를 지원해 주셔서 대단히 감사합니다!