7장 - 재사용 클래스
Think in java 독서 노트
pikzas
2019.03.06
제7장 복용류
지식점
1. JAVA의 클래스 재사용 방법
1.1.그룹에서 클래스 A를 클래스 B의 속성으로 표현한 것은 B에 A라는 개념이 있다는 것이다.
예를 들어 자동차 카는 엔진 Engine과 같은 관계가 있다
class Car{
private Engine engine;
}
1.1.1.조합이 가져온 초기화 문제
앞에서 초기화의 몇 가지 절차를 언급한 바와 같이 조합된 기본 데이터 형식은 불러오기가 끝난 후에 비워두기 (0 또는 0.0 또는false 등) 인용 데이터 형식은 불러오기가 끝난 후에null로 설정합니다.
인용 형식 초기화의 네 가지 방식
class Demo{
private int i = 21;
}
class Demo{
private int i;
public Demo(){
i = 22;
}
}
class Demo{
private SomeThingBig someThingBig;
public void method(){
if(someThingBig==null){
someThingBig = new SomeThingBig();
//
}
}
}
class Demo{
private int x;
{
x = 123;
}
}
1.2.클래스 A를 클래스 B의 하위 클래스로 표현하는 것은 클래스 A가 B클래스의 하위 집합이라는 개념을 계승한다.
예를 들어 빨간색 레드는 컬러 컬러의 일종이에요.
class Red extends Color{
}
1.2.1.상속된 일부 설명 하위 클래스가 부모 클래스의 속성과 방법에 대한 접근 권한은 패키지 클래스의 접근 권한 제어에 따른다
따라서 부모 클래스의 속성을private로 설정하는 것을 추천합니다. 부모 클래스만 접근할 수 있습니다.모든 사람이 접근할 수 있도록 방법을public로 설정합니다
1.2.2.보호된 키워드
앞에서 언급한 바와 같이 만약에 하나의 속성이나 방법이 나타나서 하위 클래스에 접근하고 싶다면 보호ted로 설정하고 보호ted가 기본 패키지 접근 권한을 겸비하는 것을 주의해야 한다.
1.2.3.부자류의 초기화
컴파일러는 자동으로 하위 클래스의 구조기에서 하위 클래스의 구조기를 호출합니다. (하위 클래스가 없는 구조기를 겨냥합니다.) 하위 클래스가 있는 구조기나 하위 클래스가 있는 구조기만 호출하려면 하위 클래스에서 하위 클래스의 구조 방법을 수동으로 호출해야 합니다.
1.2.4.super 키워드
하위 클래스에서 부모 클래스의 인용을 얻으려면 슈퍼로 할 수 있습니다.
1.2.5.만약 부자류가 존재하는 상황에서 정확한 정리 순서를 보장한다면
클래스의 정리 순서를 실행할 때, 순서는 생성 순서와 상반된다
1.2.6.오버로드와 다시 쓰기 (덮어쓰기) 오버로드
overload 하위 클래스가 부모 클래스에 대한 방법에서 발생하면
1.2.7.향상된 전환
하위 클래스와 상위 클래스가 상속도에 있기 때문에 상위 클래스는 상부에 있고 하위 클래스는 하부에 있다.
1.2.8.상속 및 초기화
클래스 코드는 처음 사용할 때만 불러옵니다. 클래스의 첫 번째 대상을 만들 때나 클래스에 접근할 때static의 속성이나 방법을 가리킵니다. (구조 방법은 은식static입니다)
1.2.9.계승 구조에서 클래스 초기화 과정
package com.pikzas.thinkinjava.chapterseven;
public class Insect {
private int i = 9;
protected int j;
Insect(){
System.out.println("i = " + i +" , j = " + j);
j = 47;
}
private static int x1 = printInit("static Insect x1 init");
static int printInit(String s){
System.out.println(s);
return 99;
}
}
public class Bettle extends Insect {
private int k = printInit("None Static field init");
public Bettle(){
System.out.println("k = " + k );
System.out.println("j = " + j );
}
private static int x2 = printInit("static Bettle x2 init");
public static void main(String[] args) {
System.out.println("Bettle main method");
Bettle b = new Bettle();
}
}
bettle에서main을 실행한 결과:
static Insect x1 init
static Bettele x2 init
Bettle main method
i = 9 , j = 0
None Static field init
k = 99
j = 47
분석 로드 프로세스
1.3.에이전트가 클래스 A의 방법을 호출할 때 B는 A의 속성으로 B에게 위탁하여 집행한다
예를 들어 자동차 카를 시동하면 실제 집행자는 Engine이다
class Car{
private Engine engine;
public void start(){
engine.start();
}
}
2.final 키워드로 표현하고자 하는 의식은 바꿀 수 없다
2.1.속성에 더하기
기본 데이터 형식이라면 이 변수의 값은 더 이상 변동되지 않습니다. 인용 데이터 형식 (수조 포함) 이라면 이 변수가 가리키는 메모리 주소는 더 이상 변동되지 않지만, 대상 내부 속성은 변할 수 있습니다.
2.1.1 컴파일 기간 상수
세 가지 요구를 만족시키는 변수는 컴파일러 상수가 될 수 있다
자바는 변수가final이라는 전제에서 초기 값을 정하지 않지만 사용하기 전에 반드시 값을 지정해야 하기 때문에 유연성을 높이고 구조기 초기화에 사용해야 한다.
class Demo{
private int i;
public Demo(){
i = 1;
}
public Demo(int x){
i = x;
}
}
2.2.덧붙이다
정확히 말하면 방법에 추가된 매개 변수 목록의 수식자에 이 대상은 방법에서 변동할 수 없다는 것을 나타낸다.그렇지 않으면 잘못 보고할 것이다.
class Demo{
public void method(final int i){
i = 123; // i , 。
}
}
2.2.1.final 및 private 키워드
private 수식법
2.3.클래스에 더하기
이 클래스가 계승될 수 없고 그 중의 방법도 덮어쓸 수 없다(계승할 수 없다. 어떻게 덮어쓰는가). 그 중의 속성은 수요에 따라final인지 결정한다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.