자바 코드 재 활용 의 세 가지 상용 방식: 계승, 조합, 대리

6137 단어 네트워크코드
자바 코드 재 활용 의 세 가지 상용 방식: 계승, 조합 과 프 록 시 재 활용 코드 는 자바 의 많은 사람들의 주목 을 끄 는 기능 중 하나 이다.이 말 은 매우 매 끄 럽 고 문제 가 없 지만, 문 제 는 많은 사람들 이 '복용' 이 무엇 인지 잘 모른다 는 데 있다.마치 내 가 '침묵 왕 2 는 코드 만 쓸 줄 아 는 프로그래머' 라 고 말 한 것 처럼, 아이고, 침묵 왕 2 는 누구 야?
우 리 는 '복용' 에 대한 다음 정 의 를 내 려 야 한다.복용, 말하자면 중복 사용 이다.
예 를 들 어 많은 유명인 들 이 명언 을 많이 했 습 니 다. 우 리 는 말 을 하고 글 을 쓸 때 의도 적 으로 이런 명언 을 반복 합 니 다.예 를 들 어 저 는 왕 소 파 의 명언 을 반복 하 는 것 을 특히 좋아 합 니 다. "말 에서 당신 은 인성 을 배우 지 못 하고 침묵 속 에서 도 할 수 있 습 니 다. 더 배우 고 싶다 면 계속 한 마디 도 하지 않 아야 합 니 다."
위의 이 예 는 '재 활용' 의 저급한 응용 이 라 고 할 수 있 지만 사실은 복사 붙 여 넣 는 것 이다.고급 재 활용 방법 도 있 나 요?
네, 물론 있 습 니 다.자바 는 우수한 대상 을 대상 으로 디자인 한 언어 로 서 재 활용 응용 에 있어 서 훨씬 고 급 스 러 워 졌 다.
01. 계승 에서 가장 흔히 볼 수 있 는 재 활용 방법 은 바로 계승 입 니 다. extends 키 워드 를 사용 하여 기본 클래스 를 바탕 으로 새로운 종 류 를 만 들 고 새로운 종 류 는 기본 클래스 의 비 private 속성 과 방법 을 직접 재 활용 할 수 있 습 니 다.프로그램 목록 1 - 1 처럼.
프로그램 목록 1 - 1:
public class Wangxiaosan extends Wangsan {public Wangxiaosan () {System. out. println ("나 는 새로운 종류의 왕 소 3");
    setName("   ");

    System.out.println(getName());
}

public static void main(String[] args) {
    new Wangxiaosan();
}

}
class Wangsan { private String name;
Wangsan() {
    System.out.println("      ");
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

} 프로그램 목록 1 - 1 에서 알 수 있 듯 이 getName () 과 setName () 방법 은 기본 클래스 Wangsan 에서 만 들 어 졌 지만 새로운 클래스 Wangxiaosan 에서 사용 할 수 있 습 니 다. 코드 의 재 활용 작업 은 이렇게 쉽게 완 료 됩 니 다.
02 조합 에서 흔히 볼 수 있 는 재 활용 방법 은 조합 이다. 새로운 클래스 에서 기 존 대상 을 만 들 고 이 대상 을 통 해 기 존 클래스 의 비 private 속성 과 방법 을 호출 하 는 것 이다. 프로그램 목록 2 - 1 과 같다.
프로그램 목록 2 - 1:
public class Tongxiangyu { private Baizhantang boyFriend = new Baizhantang();
public Tongxiangyu() {
    System.out.println("            ");

    boyFriend.[pointHand](http://www.yaoqikj.com)("   ");
}

public static void main(String[] args) {
    new Tongxiangyu();
}

}
class Baizhantang {Baizhantang () {System. out. println ("나 는 강호 에 은거 한 도 성 백 전시 장");}
public void pointHand(String name) {
    System.out.println("  " + name + ",    ——     ");
}

} 프로그램 리스트 2 - 1 에서 알 수 있 듯 이 해바라기 점 혈 수 는 백 전시 장의 묘기 이지 만 동 사장 의 남자친구 로 서 동 사장 이 전시 장 에 구멍 을 뚫 으 려 고 하 는데 전시 장 도 거절 할 수 없다. 보 세 요. 동 사장 은 약 한 여자 이지 만 전시 장 이라는 무공 으로 손 꼽 히 는 남자친구 가 생 긴 후부 터 감히 말 을 안 듣 는 사람 이 없 잖 아 요. 대단한 조합 이에 요.
주의해 야 할 것 은 계승 과 그룹 사이 에서 어떻게 선택 할 것 인가?
만약 에 새로운 유형 과 기 존 유형 이 비슷 한 방법 과 속성 을 가 져 야 할 때 계승 형식 을 사용한다. 만약 에 새로운 유형 이 기 존의 방법 과 속성 을 빌 리 기 위해 서 라면 이들 이 비슷 한 점 이 많 지 않 을 때 조합 형식 을 사용 해 야 한다.
03 에이전트 의 또 다른 재 활용 방법 은 에이전트 입 니 다. 새로운 클래스 에서 대 리 를 만 들 고 대 리 를 통 해 기 존의 비 private 속성 과 방법 을 조작 하 는 것 입 니 다. 프로그램 목록 3 - 1 과 같 습 니 다.
프로그램 목록 3 - 1:
public class Member {public static void main (String [] args) {Proxy proxy = new Proxy (); System. out. println ("알약 15 개 를 대리 로 말 합 니 다"); proxy. buy (15);}}
class Proxy { private Shop shop = new Shop();
public void buy([int money](http://zzsffx.1358tv.com)) {
    System.out.println("       ");
    shop.sale(money - 5);
}

}
class Shop {public void sale (int money) {System. out. println ("알약 한 개 에 10 원");}} 프로그램 목록 3 - 1 에서 알 수 있 듯 이 대리 의 모델 과 조합 은 약간 유사 하지만 차이 가 있 습 니 다. 대리 가 새로운 유형 (회원) 과 기 존 유형 (가게) 의 직접적인 관 계 를 성공 적 으로 분리 하여 기 존 유형 에 직접 노출 되 지 않 는 방법 입 니 다.(조합 방식 은 기 존의 비 private 방법 과 속성 을 새로운 유형 에 직접 노출 시 킬 것 이다) 이와 동시에 대 리 는 충분 한 이익 을 얻 었 다.
04 final 은 코드 의 생산자 로 서, 우 리 는 때때로 코드 가 재 활용 되 기 를 바 랍 니 다. 때로는 코드 가 재 활용 되 지 않 기 를 바 랍 니 다. 코드 가 재 활용 되 기 를 원 하지 않 을 때, final 키 워드 는 유용 합 니 다. final 이라는 키 워드 는 매우 형상 적 입 니 다. 그 자체 가 모든 것 을 설명 합 니 다 - 마지막, 최종, 결정적, 변경 할 수 없습니다.
final 을 사용 하 는 장면 은 세 가지 가 있 는데 그것 이 바로 데이터, 방법 과 유형 입 니 다. 우 리 는 잠시 설명 하 겠 습 니 다.
1) 최종 데이터
가장 흔히 볼 수 있 는 final 데 이 터 는 상수 입 니 다. 예 를 들 어:
public class Consts {public static final String CMOWER = "침묵 왕 2";} 상수 에 있어 서 전체 응용 프로그램의 모든 종 류 를 볼 수 있 기 때문에 Public 입 니 다. 클래스 이름 을 통 해 직접 접근 할 수 있 기 때문에 static 입 니 다. 수정 할 수 없 기 때문에 final 입 니 다.
또 다른 흔히 볼 수 있 는 final 데 이 터 는 매개 변수 입 니 다. 프로그램 목록 4 - 1 을 참조 하 십시오.
프로그램 목록 4 - 1:
public class Cmower {
public void write(final String content) {
    // content += "   "; // final                   
    System.out.println(content);
}

public void write1(String content) {
    content += "   ";
    System.out.println(content);
}

public static void main(String[] args) {
    Cmower cmower = new Cmower();
    cmower.write("    ");
    cmower.write1("   ");
}

} 2) final 방법
자바 류 에서 모든 private 방법 은 암시 적 으로 final 로 지정 되 어 있 습 니 다. (즉, private 방법 에 final 수식 자 를 더 하면 의미 가 없습니다). 상속 을 소개 할 때, 당신 은 내 가 강조 하 는 한 마디 를 주의해 야 합 니 다. 즉, 새로운 종 류 는 기본 클래스 의 비 private 속성 과 방법 을 직접 복용 할 수 있 습 니 다. 즉, private 방법 은 상속 자 에 의 해 수정 되 지 않 습 니 다. private 방법 은 final 이기 때 문 입 니 다.
프로그램 목록 4 - 2 를 보면 Wangsan 형식의 san 인용 은 say (String words) 방법 을 호출 할 수 없습니다. private 방법 은 상속 자 에 의 해 수정 되 지 않 기 때 문 입 니 다. Wangxiaosan 에서 say (String words) 방법 을 다시 정의 하 였 음 에 도 불구 하고.
프로그램 목록 4 - 2:
public class Wangxiaosan extends Wangsan {public Wangxiaosan () {say ("점심 먹 었 어 요");}
public void say(String words) {
    System.out.println("     :" + words);
}

public static void main(String[] args) {
    Wangsan san = new [Wangxiaosan](http://www.xianggjtop.com)();
    // san.say("    "); //     ,      
}

}
class Wangsan {public Wangsan () {say ("아침밥 먹 었 어");}
private void say(String words) {
    System.out.println("    :" + words);
}

} 3) final 클래스
우 리 는 어떤 종류 가 최종 형태 라 고 생각한다. 그것 은 완벽 하 다. 계승 되 어 서 는 안 된다. final 키 워드 를 사용 하여 수식 할 수 있다. 프로그램 목록 4 - 3 을 참조 하 라.
프로그램 목록 4 - 3:
/ / public class 를 계승 할 수 없 음 Wangxiaosan extends Wangsan {}
final class Wangsan {public Wangsan () {System. out. println ("내 가 최종 형태 야. 물 려 받 지 마!");}}

좋은 웹페이지 즐겨찾기