자바 기초 독학 1 기 (상)
저 는 대학교 2 학년 컴퓨터 학과 입 니 다. 겨울방학 동안 자바 가 배 운 지식 을 정리 하고 싶 습 니 다. 공부 하면 서 정리 하 는 것 이 좋 습 니 다.여러분, 황소 가 본 후에 의견 을 제시 할 수 있 기 를 바 랍 니 다. 여러분 이 함께 토론 하고 교류 하 며 함께 발전 하 는 것 을 환영 합 니 다.글 의 내용 은 《 자바 핵심 기술 》 을 참고 할 수 있다.
본 고 는 류, 초 류 와 자 류 의 관계 와 Object 류 의 특성 을 구체 적 으로 소개 한다.
클래스
우선, 클래스 는 자바 에서 비교적 중요 한 개념 으로 하나의 공 통 된 특징 과 기능 을 가 진 사물 에 대한 추상 적 인 묘사 와 유사 하 다.초 류 (부류) 와 자 류 는 수학 에서 집합 하 는 관계 에 대응 할 수 있다.하위 클래스 는 초 류 를 포함한다 고 할 수 있다.물론 자바 에 서 는 하위 클래스 가 초 류 나 부 류 를 계승 하 였 으 나 초 류 가 하위 클래스 보다 더 많은 기능 을 가지 거나 상세 한 설명 을 가지 고 있 는 것 은 아니 며, 반대로 하위 클래스 가 가지 고 있 는 기능 이 더욱 풍부 하 다.예 를 들 어 회사 에 직원 과 사장 이 있 고 물론 사장 도 직원 이다.사장 은 직원 들 의 기본 적 인 특징 인 출근, 퇴근, 매달 월급 을 받는다 는 것 을 물 려 받 았 다.물론 사장 은 연말 상여금 을 받 는 등 자신 만 의 독특한 방법 도 있다.
클래스 간 의 구성원 변수, 방법 과 구조 기
하위 코드 에서 초 클래스 의 구성원 변 수 는 방법 과 마찬가지 로 호출 할 수 있 습 니 다.슈퍼 키 워드 를 사용 하여 초 클래스 의 이 방법 을 호출 해 야 합 니 다. 그렇지 않 으 면 기본적으로 이 종 류 를 호출 하 는 방법 입 니 다.메모: 슈퍼 는 대상 의 인용 이 아 닙 니 다. this 와 는 달리 이 대상 의 인용 입 니 다. 컴 파일 러 에서 초 류 방법 을 호출 하 는 특수 한 키워드 일 뿐 입 니 다.하위 클래스 의 구조 방법 에서 슈퍼 (매개 변수) 는 초 류 유 삼 의 구조 방법 을 호출 했다.하위 클래스 에 명시 적 인 초 류 구조 방법 이 없 으 면 초 류 의 무 참 구조 방법 을 자동 으로 호출 할 수 있다.초 클래스 에서 private 로 수 식 된 구성원 변 수 는 하위 클래스 에 서 는 슈퍼 get 방법 으로 만 참조 할 수 있 고 나머지 수식 변 수 는 직접 참조 할 수 있 습 니 다.
this 역할 은 두 가지 가 있 습 니 다. 하 나 는 암시 적 인 파 라 메 터 를 참조 하 는 것 이 고 다른 구조 기 를 호출 하 는 것 입 니 다.슈퍼 역할 도 두 가지 이다. 하 나 는 초 류 를 호출 하 는 방법 이 고, 다른 하 나 는 초 류 를 호출 하 는 구조 기 이다.그 중에서 슈퍼 호출 구조 기 는 반드시 하위 구조 방법의 첫 번 째 문장 으로 나타 나 야 한다!
다 중 및 동적 연결
하위 클래스 에서 초 클래스 를 덮어 쓸 수 있 는 방법 은 @ Override 를 추가 하여 이 루어 집 니 다.
//Employee
@Override
public void method() {
System.out.println(" ");
}
//Person
public void method()
{
System.out.println(" ");
}
Employee e = new Employee(); //
e.method();
:
하나의 방법 이 여러 클래스 에서 이 루어 지면 JVM 은 프로그램 이 실행 되 기 전에 어떤 종류의 방법 을 정적 바 인 딩 이 라 고 부 르 는 지 알 수 있 습 니 다.컴 파일 러 는 방법 이 호출 될 때 초 클래스 와 하위 클래스 의 방법 표를 보 여 줍 니 다. 그 중에서 일치 하 는 방법 에 대한 서명 (방법 이름과 매개 변수 목록) 을 보 여 줍 니 다.하위 클래스 를 우선 호출 하 는 방법 입 니 다. 없 으 면 위로 찾 습 니 다. 이것 을 동적 바 인 딩 이 라 고 합 니 다.
계승 저지: final 클래스 와 방법
final 에 의 해 수 정 된 클래스 는 다른 부모 클래스 를 계승 할 수 없습니다. final 에 의 해 수 정 된 방법 은 하위 클래스 에 덮어 쓸 수 없습니다. (final 클래스 의 모든 방법 은 자동 으로 final 방법 이 됩 니 다.)
자바 언어 는 세 가지 특징 이 있 는데 그것 이 바로 봉인 성, 계승 성, 다 태 성 이다.
패 키 징 성 은 방법의 실현 디 테 일 을 무시 하고 방법의 기능 을 강조 하 며 대외 적 으로 호출 된 실현 인 터 페 이 스 를 제공 하여 패 키 징 된 내 부 를 보호 하고 외부 수정 을 방지 하 며 외부 에서 속성 에 대한 접근 을 제한 하 는 것 이다.계승 성 은 유형 과 유형 간 의 관계 로 여러 가지 유형 이 공유 하 는 특징 과 방법 을 추출 하여 초 류 로 정의 하고 초 류 를 계승 하 는 것 이다.자바 에 서 는 다 중 상속 을 허용 하지 않 습 니 다. 즉, 한 종 류 는 여러 개의 부 류 를 물 려 받 았 습 니 다.그러나 다 중 상속, 즉 아들 인 아버지, 할아버지 가 허용 된다.다 형 성 은 아버지 대상 을 하나 이상 의 아들 대상 으로 설정 하 는 것 을 허용 하 는 기술 이다.
Person p = new Employee(); // , 。
예 를 들 어 다른 사람 이 결혼식 을 올 려 너희 집에 결혼 잔 치 를 대접 하 는데 청첩장 에 너의 아버지의 이름 이 쓰 여 있다. 사실은 너의 아버지 가 가도 되 고 네가 가도 되 고 네 여동생 이 가도 된다. 왜냐하면 너희들 은 모두 한 가족 이기 때문에 너의 아버 지 를 대신 할 수 있 기 때문이다.결혼식 이 거행 되 기 전에 너희 집 이 도대체 누가 갈 지 아무 도 모 르 고 단지 너희 가족 이 참가 할 것 이 확실 할 뿐이다.메모: 다 중 방식 호출 방법 을 사용 할 때 먼저 부모 클래스 에 이 방법 이 존재 하 는 지 확인 하고 존재 하면 하위 클래스 를 검사 하 며 하위 클래스 도 존재 하면 하위 클래스 를 호출 하 는 방법 입 니 다.그렇지 않 으 면 부류 의 방법 을 사용한다.부류 에 이 방법 이 존재 하지 않 으 면 부류 에 존재 하 더 라 도 잘못 을 고 할 수 있다.
추상 류
계승 차원 에서 조상 류 는 그 자 류 에서 통용 성 이 더욱 강하 지만 조상 류 의 대상 기능 과 특성 이 너무 적어 서 하나의 사례 를 묘사 할 수 없 기 때문에 사람들 은 이 를 특정한 실현 류 가 아니 라 다른 유형의 기본 류 로 만 생각 하고 있다.이렇게 하면 조상 류 의 방법 내용 은 중요 하지 않 고 방법 인 터 페 이 스 를 유지 하면 되 며 그 내용 은 하위 류 에 덮어 쓰 고 다시 쓸 수 있다.이런 조상 류 는 추상 류 가 된다.추상 류 는 new 대상 을 직접 만 들 수 없습니다. 이러한 사례 화 를 무시 하고 기본 기능 인터페이스 만 유지 하기 때 문 입 니 다.추상 적 인 종 류 를 계승 하고 재 작성 하 는 방법 을 만 들 필요 가 있 습 니 다.주의해 야 할 것 은 추상 류 의 대상 변 수 를 정의 할 수 있 지만 실현 류 (비 추상 서브 클래스) 의 대상 만 인용 할 수 있 습 니 다.
Person p = new Employee();
여기 서 p 는 추상 적 인 Person 의 변 수 를 정 의 했 지만 p 는 클래스 Employee 대상 의 인용 을 실현 합 니 다.
자바 의 네 가지 수정자
보 이 는 범위 에 따라 큰 것 부터 작은 것 까지:
public: 모든 클래스 에 보 이 는 proctected: 이 가방 과 모든 하위 클래스 에 보 이 는 수정자: 이 가방 에 보 이 는 private: 이 클래스 에 보 이 는 private:
Object: 모든 종류의 초 클래스
자바 의 모든 클래스 는 Object 클래스 를 계승 하기 때문에 모든 클래스 는 Object 클래스 의 방법: equals (), toString (), hashCode () 를 호출 할 수 있 습 니 다.
equals () 는 두 대상 이 같 는 지 시험 합 니 다.
두 대상 이 같은 인용 이 있 는 지 판단 하 다.재 작성 방법 에 앞서 equals () 는 두 인용 이 같은 주소 값 이 있 는 지, '= =' 과 같은 효과 가 있 는 지 비교 합 니 다.다시 쓰 면 두 인용 이 같은 내용 이 있 는 지 비교 합 니 다.
Person p2 = new Person(" ",19);
Person p1 = new Person(" ",19);
System.out.println(p1==p2);
System.out.println(p1.equals(p2));
:
false
false // ,
// C 。
다시 쓴 후에
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Person person = (Person) o;
return age == person.age && Objects.equals(name, person.name);
}
:
false
true //
toString () 대상 값 을 되 돌려 주 는 문자열
다시 쓰기 전에 대상 을 직접 인쇄 하면 대상 의 문자열 을 되 돌려 줍 니 다.IDEA 자동 재 작성 기능 은 대상 의 속성 값 을 출력 합 니 다.일상적인 개발 과정 에서 toString () 방법 을 다시 쓰 는 것 이 필요 하 다.이렇게 하면 대상 상태의 필요 한 정 보 를 직관 적 으로 볼 수 있다.예 를 들 면:
Person p = new Person(" ",19);
System.out.println(p);
:
demo0Review.Person@7ef20235
하면, 만약, 만약...
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
:
Person{name=' ', age=19} //
hashCode () 대상 의 해시 코드 를 되 돌려 줍 니 다.
같은 두 대상 은 같은 해시 코드 로 돌아간다.
IDEA 에 toString 재 작성 방법, hashCode 방법, equals () 방법 을 자동 으로 추가 할 수 있 습 니 다.
equals () 방법 을 다시 썼 다 면 hashCode () 방법 을 다시 써 서 두 속성 이 같은 대상 의 해시 값 을 동일 하 게 유지 해 야 합 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
【eclipse】같은 파일을 2개 열고 싶다【에디터의 분할】「이런 것은 다른 클래스로 나누어야 한다!」라든지 있다고는 생각합니다만. 실제로 실무 속에서 프로그램을 쓰고 있으면, 이런 소스에 눈에 걸리는 일도 적지 않을까···. 그건 그렇고, 내 노트북에서 이렇게 보입니다 네...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.