이 기사는 주로 Java 프로그래밍의 수업을 다중화했습니다. 그렇다면 다중 클래스는 무엇이며 사용법은 무엇입니까? 다음은 자세한 소개입니다.
Luo Luo Shengyang과의 인터뷰를 읽은 후, 나는 그를 도울 수 없었습니다. 그는 아주 어 렸습니다. 나는 Luo Yonghao와 같은 나이에 있다고 생각했고, 나는 주니어 및 시니어 고등학교 프로그래밍이 아닌 큰 사람들 중 한 명을 만났습니다. 인터뷰 후, 나는 Luo Luo가 한 번에 한 걸음 씩 한 사람이라는 것을 알았습니다. 하기가 어렵거나 할 수 없다고 말하지 마십시오. 당신은 그것을 시도하거나 지속하지 않았습니다.
날 수 없다면 달리기, 달리지 않으면 걸을 수 없다면 걸을 수 없다면 기어 다니지 만
당신이 무엇을하든, 당신은 계속 앞으로 나아가 야합니다-마틴 루터 킹.
재사용 수업의 제목은 처음에 이해하기 어려웠습니다. 나중에 나는 책의 원래 영어 버전을 읽으 러 갔다. 실제로, 제목은 수업을 재사용했으며, 수업을 재사용하는 것은 "기성품을 사용하는"것을 의미했습니다. 실제로, 두 가지 구현 방법은 종종 Java (조합 및 상속)로 들립니다.
(1) 조합
Has-A의 역할.
공개 클래스 TV {쇼 쇼; public String tostring () {return "showgirl"; }} 클래스 쇼 {} Tostring 방법을 언급 해 봅시다. 문자열이 필요하고 객체 인 경우 컴파일러는 객체의 Tostring 메소드를 호출합니다.
TV에는 쇼가 있습니다. 현재 쇼는 초기화되지 않았으며 NULL입니다. 쇼 방법을 호출 할 수 없습니다.
조합은 강력한 영향을 미칩니다. 객체 지향적 관점에서 자동차 클래스를 만드는 경우 유리, 조명, 엔진 및 기타 자동차 구성 요소를 조합을 사용하여 쉽게 결합 할 수 있습니다.
(2) 상속
IS-A
package com.myown.iaiti; 공개 클래스 아버지 {public int i; void get () {system.out.println ( "아버지");}} 패키지 아들; import com.myown.iaiti. get () {super.get (); system.out.println ( "son");}}여기에는 패키지 액세스 권한에 문제가 있습니다. 대중이 추가되지 않으면 기본값은 패키지 내의 멤버에 액세스하는 것입니다. 다른 패키지 액세스, 즉 아들의 아버지 멤버의 액세스 방법은 보이지 않습니다. 그리고 공개 단어가 보이므로 액세스 할 수 있습니다.
개인 부분은 상속받을 수없고 부모 클래스 개인에 속하는 반면, 공개 부분은 상속되고 수정 해야하는 방법을 다시 작성할 수 있습니다. 추가 할 속성을 별도로 추가 할 수 있습니다.
또한, 원래 부모의 공개 방법이 다시 쓰인 경우, 원래 아버지의 공개 방법이 공개되지 않으면 아버지의 상속 된 방법의 가시성을 줄이지 않으므로 부모 클래스에서 상속 된 방법의 가시성을 줄일 수 없습니다. 슈퍼는 부모 수업, 즉 아버지를 말합니다.
또 다른 요점은 실제로 Java의 모든 클래스가 암시 적으로 객체 클래스를 상속한다는 것입니다. 객체는 부모 클래스이고 다른 클래스는 서브 클래스입니다. 외국인들은 그것에 대해 기본 클래스로 이야기하는 것을 좋아합니다. 서브 클래스는 수출 클래스 또는 파생 클래스라고도합니다.
(3) 에이전트
디자인 모델에서 에이전트 모델에서 상대적으로 어려운 방법이 있습니다. 저자는 그것에 대해 매우 흥미롭게 이야기합니다. 대리인은 조합과 상속의 평균의 교리입니다.
패키지 아들; 클래스 아버지 {public void get () {System.out.println ( "아버지"); }} 공개 계급 아들은 아버지를 확장합니다 {public static void main (String [] args) {아버지 f = new Afrish (); f.get (); }} 클래스 아버지 프록시 {개인 아버지 f = 새로운 아버지 (); public void get () {f.get (); }}당신이 아버지를 회원으로 직접 대우한다면, 아버지 방법은이 수업에 노출됩니다. 그런 다음 아버지 프록시와 같은 프록시 클래스를 사용할 수 있습니다. 나는 GET 메소드를 직접 얻는 방법을 정의합니다. 나는 그것이 아버지의 GET 방법이라고 부르는 것을 알고 있지만 내 프록시를 사용하는 사람은 모른다. 나는 당신이 그것을 사용하고 싶다면 프록시의 get 메소드를 사용한다고 말합니다. 캡슐화가 반영됩니다. 위는 무작위 노크의 간단한 예일뿐입니다.
(4) 재 작성 및 새로 고침
클래스 아버지 {public void get (문자열 s) {system.out.println ( "아버지"); } public void get (boolean b) {System.out.println ( "boolean"); }} 공개 계급 아들은 아버지를 확장합니다. } // @override // 상위 클래스 에이 메소드가 없기 때문에 오류 메시지가 발생합니다. 공개 void get (int i) {System.out.println ( "sonint")을 다시 작성하지 않습니다. } public static void main (String [] args) {Son s = new Son (); s.get ( "d"); s.get (false); s.get (1); }}다시 쓰는 것은 부모 클래스의 메소드를 다시 쓰는 것입니다. 다시 쓰기 또는 과부하가없는 경우 서브 클래스가 서브 클래스에없는 메소드를 호출하면 실제로 상위 클래스를 호출합니다.
오버로드는 동일한 메소드 이름이지만 매개 변수 이름은 다릅니다. 오버로드가 잘못되지 않도록 @override 태그를 추가하여 메소드를 다시 작성하지 않아야합니다.
(5) 보호
Java 프로그래밍 액세스 권한을위한 제어 코드에 대한 자세한 설명
나는 이전에 상속에 대해 이야기하지 않았기 때문에 이전 기사를 미리 썼습니다.
보호를 단순히 아들에게 부모 계급의 상속으로 간주 할 수 있으며 다른 비인간 클래스에 액세스 할 수 없습니다.
(6) 최종 키워드
최종 키워드의 기본 유형을 추가하면 초기화 후이 변수가 변경되지 않음을 의미합니다. C 정의와 마찬가지로이 프로그램의 변수가 변경하지 않고이 값이되기를 원합니다. Final을 사용할 수 있습니다.
공공 계급 아들 {int age = 2; public static void main (String [] args) {Final int i = 1; // i = 2; 값은 더 이상 변경 될 수 없습니다. 최종 아들 아들 = New Son (); // 아들 = 새로운 아들 (); // 최종 로컬 변수 아들을 할당 할 수 없습니다. // 비어 있어야하고 복합 할당을 사용하지 않아야합니다. // Final에 의해 수정 된 로컬 변수 아들은 할당 할 수 없으므로 비어 있거나 다시 할당되지 않아야합니다. // 참조가 일정하지만 객체 자체를 변경할 수 있습니다. } void 변경 (최종 int C) {// c = this.age; 메소드가 매개 변수를 전달하고 객체 참조 가이 // age ++와 유사하다고 결정하면 값이 객체 참조 만 결정하기 때문에 새 값을 할당 할 수 없습니다. 변경할 수 없습니다}} 정적은 원래 정적 초기화이며 최종적으로 사용되어 변경할 수없는 저장 공간을 차지합니다.
정적 최종은 컴파일 기간 동안 상수입니다. 상수 이름은 전통적으로 c의 상수에 따라 명명됩니다. 모두 대문자이며 단어는 밑줄로 분리됩니다.
정적 최종 value_one = 1;
최종 방법을 수정할 때
public class print {Final void n'tPrint () {System.out.println (1); }} public class printson은 print {// void cantprint () {} // 최종 public static void main (String [] args)에 의해 수정되어 다시 작성할 수 없습니다. {printson ps = new printson (); ps.cannotprint (); }}부모 계급은 아동 계급이 상속해야한다고 요구하는 수정되지 않은 속성 (조상 상속)으로 간주 될 수 있습니다. 개인은 당신에게 상속을 전혀 제공하지 않기 때문에 개인은 암시 적으로 최종적으로 지정됩니다. 이것은 상속을 제공하는 것보다 더 개인적이지만 수정하지는 않습니다.
그건 그렇고, 권한을 지우십시오.
Final이 클래스를 수정하면이 클래스가 상속되는 것을 방지하는 것입니다.
(7) 상속 및 초기화
여기서 주문 문제는 흥미로운 질문입니다. 예를 참조하십시오.
클래스 할아버지 {private static int i = print (); private static int print () {System.out.println ( "g"); 반환 1; }} 클래스 아버지 확장 할아버지 {private static int i = print (); private static int print () {System.out.println ( "f"); 반환 1; }} 공개 클래스 아들은 아버지를 확장합니다 {private static int i = print (); private static int print () {System.out.println ( "S"); 반환 1; } public static void main (String [] args) {System.out.println ( "첫 번째"); }} 인쇄 결과가 먼저 있습니까? 잘못된.
주요 방법이 실행되지만 정적 초기화가 필요한 아들이 그것을 가지고 있지 않지만 결과는 먼저 S입니다.
초기화 문제도 있습니다. 아들은 아버지를 물려 받으므로 컴파일러는 아버지를로드하고 초기화 할 것입니다. 아버지가 할아버지를 물려 받으면 컴파일러는 재귀와 비슷한 할아버지를 장착 할 것입니다.
마지막으로 초기화 된 것은 할아버지의 i입니다.
따라서 최종 결과는 다음과 같습니다. G, F, S, 먼저.
요약
위의 내용은이 기사에서 Java 프로그래밍 다중화 코드에 대한 자세한 설명입니다. 모든 사람에게 도움이되기를 바랍니다. 관심있는 친구는이 사이트의 다른 관련 주제를 계속 참조 할 수 있습니다. 단점이 있으면 메시지를 남겨 두십시오. 이 사이트를 지원해 주신 친구들에게 감사드립니다!