[코드 농 매일 1 문제] 자바 리 셋 과 면접 기초 문제 리 셋
답: 과부하 (Overload) 는 클래스 로 하여 금 서로 다른 유형의 데 이 터 를 통일 적 으로 처리 하 게 하 는 수단 이다. 실질 적 으로 표현 하 는 것 은 서로 다른 매개 변수 개수 나 유형 을 가 진 동명 함수 (반환 값 유형 은 마음대로 할 수 있 고 반환 유형 을 과부하 함수 의 구분 기준 으로 할 수 없다) 가 같은 유형 에 동시에 존재 하 는 것 으로 같은 유형 에서 다 형 적 인 표현 이다.(호출 방법 은 서로 다른 매개 변수 개수 와 매개 변수 유형 을 전달 하여 어떤 방법의 다 형 성 을 구체 적 으로 사용 할 지 결정 합 니 다).
다시 쓰기 (오 버 라 이 드)부모 클래스 와 하위 클래스 간 의 다 형 성 입 니 다. 실질 적 으로 부모 클래스 의 함 수 를 재 정의 하 는 것 입 니 다. 만약 에 하위 클래스 에서 특정한 방법 이 부모 클래스 와 같은 이름과 파 라 메 터 를 정의 하면 이 방법 은 재 작성 되 지만 하위 함수 의 방문 수식 권한 은 부모 클래스 보다 작 을 수 없습니다. 만약 에 하위 클래스 의 방법 이 부모 클래스 의 특정한 방법 과 같은 방법 명, 반환 유형 과 매개 변수 표를 가지 고 있다 면새로운 방법 은 기 존의 방법 을 덮어 씁 니 다. 부모 클래스 에 있 는 방법 이 필요 하 다 면 슈퍼 키 워드 를 사용 할 수 있 습 니 다.
리 셋 규칙: 서로 다른 매개 변수 목록 이 있어 야 합 니 다. 서로 다른 반환 형식 이 있 을 수 있 습 니 다. 서로 다른 접근 수정자 가 있 을 수 있 습 니 다. 서로 다른 이상 을 던 질 수 있 습 니 다.
재 작성 규칙: 매개 변수 목록 은 재 작성 되 는 방법 과 똑 같 아야 합 니 다. 그렇지 않 으 면 재 작성 이 라 고 할 수 없고 재 업로드 라 고 할 수 없습니다. 재 작성 유형 은 재 작성 되 는 방법 과 같 아야 합 니 다. 그렇지 않 으 면 재 작성 이 라 고 할 수 없고 재 작성 되 는 방법 과 같은 방문 수정자 에 접근 하 는 제한 이 있어 야 합 니 다. 재 작성 방법 은 새로운 검사 이상 이나 피 팅 보다 높 아야 합 니 다.재 작성 방법 은 더욱 광범 위 한 검사 형 이상 을 설명 한다. 예 를 들 어 부모 류 방법 은 검사 이상 IOException 을 성명 했다. 이 방법 을 재 작성 할 때 Exception 을 던 질 수 없고 IOException 의 하위 클래스 이상 만 던 질 수 있 으 며 비 검사 이상 을 던 질 수 있다.
리 셋 과 리 셋 은 자바 다 태 성의 서로 다른 표현 이다. 리 셋 은 부모 클래스 와 하위 클래스 간 의 다 태 적 표현 으로 실행 할 때 작용 (동적 다 태 성, 예 를 들 어 동적 귀속 실현) 하고 리 셋 은 하나의 클래스 에서 다 태 적 표현 으로 컴 파일 할 때 작용 (정적 다 태 성, 예 를 들 어 정적 귀속 실현) 한다.
― 자바 구조 방법 은 재 작성 과 재 업로드 가 가능 할 까?
답: 다시 쓰 는 것 은 하위 클래스 방법 으로 부모 클래스 를 다시 쓰 는 방법 입 니 다. 다시 쓰 는 방법 은 이름 이 변 하지 않 습 니 다. 클래스 의 구조 방법 명 은 반드시 클래스 이름과 일치 해 야 합 니 다. 부모 클래스 의 구조 방법 이 피 하위 클래스 에 다시 쓸 수 있다 고 가정 하면 하위 클래스 의 이름 은 부모 클래스 와 일치 해 야 합 니 다. 따라서 자바 의 구조 방법 은 다시 쓸 수 없습니다. 다시 쓰 는 것 은 같은 것 이 므 로 구조 방법 은 다시 실 을 수 있 습 니 다.。
가: 다음 프로그램의 실행 결 과 는 무엇 입 니까? 왜 요?
public class Demo {
public boolean equals( Demo other) {
System.out.println("use Demo equals." );
return true;
}
public static void main(String[] args) {
Object o1 = new Demo();
Object o2 = new Demo();
Demo o3 = new Demo();
Demo o4 = new Demo();
if(o1.equals(o2)) {
System.out.println("o1 is equal with o2.");
}
if(o3.equals(o4)) {
System.out.println("o3 is equal with o4.");
}
}
}
답: 위의 프로그램의 운행 결 과 는 다음 과 같다.
use Demo equals.
o3 is equal with o4.
Demo 클래스 의 Public boolean equals (Demo other) 방법 은 Object 클래스 의 Public boolean equals (Object obj) 방법 을 다시 쓰 지 않 았 기 때문에 매개 변수 규칙 에 어 긋 났 기 때 문 입 니 다. 그 중 하 나 는 Demo 형식 이 고 다른 하 나 는 Object 형식 이기 때문에 이 두 가지 방법 은 재 업로드 관계 (컴 파일 할 때 발생) 이 므 로 o1. equals (o 2) 를 호출 할 때o2 는 Object 형식 매개 변수 로 Object 클래스 의 Public boolean equals (Object obj) 방법 을 실제 호출 했 습 니 다. 컴 파일 할 때 o1 과 o2 는 모두 Object 형식 이 고 Object 클래스 의 equals 방법 은 메모리 주 소 를 비교 해서 false 로 되 돌아 갑 니 다. o3. equals (o4) 를 호출 할 때 실제 Demo 클래스 의 equals (Demo other) 를 호출 했 습 니 다.방법 은 컴 파일 할 때 o 3 과 o 4 가 모두 데모 형식 이기 때문에 위의 인쇄 가 있 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
【eclipse】같은 파일을 2개 열고 싶다【에디터의 분할】「이런 것은 다른 클래스로 나누어야 한다!」라든지 있다고는 생각합니다만. 실제로 실무 속에서 프로그램을 쓰고 있으면, 이런 소스에 눈에 걸리는 일도 적지 않을까···. 그건 그렇고, 내 노트북에서 이렇게 보입니다 네...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.