비디오: [초보자를 위한 Java Programming] 6.2 상속 실습하기 2024
Java에서 객체 지향 프로그램을 작성할 때 데이터에 대해 생각하기 시작합니다. 당신은 계정에 관해 쓰고 있습니다. 그럼 계좌가 뭐니? 버튼 클릭을 처리하는 코드를 작성하고 있습니다. 단추가 뭐니? 직원에게 급여 수표를 보내는 프로그램을 작성 중입니다. 직원은 무엇입니까?
이 예에서 직원은 이름과 직책을 가진 사람입니다. 물론 직원에게는 다른 특징이 있지만 지금은 기본 원칙에 충실합니다. 이 목록의 코드는 직원이된다는 것이 무엇을 의미하는지 정의합니다.
가져 오기 정적 자바. 랭. 체계. 아웃; 공용 클래스 Employee {private String name; 개인 문자열 jobTitle; public void setCommand (String nameName) public void setCommand (String name);}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}} 이중 금액 지불) {out. printf ("% s 주문으로 지불", 이름); 아웃. printf ("(% s) *** $", jobTitle); 아웃. printf ("%,.2fn", amountPaid);}}
목록에서 Employee 클래스가 정의됩니다. 여기에서 정의한 것을 사용하고 정의를 확장하여보다 전문화 된 새 클래스를 만들 수 있습니다. 따라서 다음 목록에서는 FullTimeEmployee 클래스 인 새 클래스를 정의합니다.
public class FullTimeEmployee Employees를 확장합니다. {private double weeklySalary; 개인 배당금 공제; public double getBenefitDeduction () {return benefitDeduction;} public double findPaymentAmount () () {}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}) {return weeklySlyary - benefitsDeduction;}}
목록을 보면 FullTimeEmployee 클래스의 각 인스턴스에 weeklySalary 및 benefitsDeduction의 두 필드가 있음을 알 수 있습니다. 그러나 각 FullTimeEmployee 인스턴스에있는 유일한 필드입니까? 아니야, 그들은 그렇지 않아.
첫 번째 줄에는 FullTimeEmployee 클래스가 기존 Employee 클래스를 확장한다고 나와 있습니다. 즉, weeklySalary 및 benefitsDeduction을 갖는 것 외에도 각 FullTimeEmployee 인스턴스에는 name 및 jobTitle이라는 두 개의 다른 필드가 있습니다. 이 두 필드는 첫 번째 목록에서 찾을 수있는 Employee 클래스의 정의에서옵니다.
두 번째 목록에서 마술 단어는 확장됩니다. 한 클래스가 기존 클래스를 확장하면 확장 클래스는 기존 클래스에 정의 된 기능을 자동으로 상속합니다.따라서 FullTimeEmployee 클래스 는 이름 및 jobTitle 필드를 상속합니다. FullTimeEmployee 클래스는 또한 seteeName, getName, setJobTitle, getJobTitle 및 cutCheck와 같이 Employee 클래스에 선언 된 모든 메서드를 상속합니다. FullTimeEmployee 클래스는 Employee 클래스의
하위 클래스 입니다. 즉, Employee 클래스는 FullTimeEmployee 클래스의
수퍼 클래스 입니다. 혈연 관계에 대해서도 이야기 할 수 있습니다. FullTimeEmployee 클래스는 Employee 클래스의 자식 이며 Employee 클래스는 FullTimeEmployee 클래스의 부모 입니다. FullTimeEmployee 클래스가이 목록의 코드에 의해 정의 된 것처럼 거의 (그러나별로는 아닙니다). 이 코드는 가짜이지만 유익합니다.
import static java. 랭. 체계. 아웃; 공용 클래스 FullTimeEmployee {전용 문자열 이름; 개인 문자열 jobTitle; 주간 2 회 개인석; 개인 배당금 공제; public void setJobTitle (String jobTitleIn) {String getJobTitle () {return jobTitle;} 공공 무효 setName (문자열 nameIn) {이름 = 이름} double double getBenefitDeduction () {return benefitDeduction;} public double findPaymentAmount () {return weeklySalaryIn} {주 weeklySalaryIn} 주 {} 주간 샐러리 (주) - benefitDeduction;} public void cutCheck (이중 금액 지불) {out. printf ("% s 주문으로 지불", 이름); 아웃. printf ("(% s) *** $", jobTitle); 아웃. printf ("%,.2fn", amountPaid);}}
이 목록이 가짜 코드 인 이유는 무엇입니까? 이 목록과 이전 목록의 상속 상황의 주요 차이점은 다음과 같습니다. 하위 클래스는 상위 클래스의 비공개 필드를 직접 참조 할 수 없습니다. 부모 클래스의 private 필드를 사용하여 작업하려면 자식 클래스가 부모 클래스의 접근 자 메서드를 호출해야합니다.
두 번째 목록으로 돌아가서 setName ("Rufus") 호출은 합법적이지만 코드 이름 = "Rufus"는 그렇지 않습니다. 마지막 목록에서 읽은 것을 모두 믿는다면 FullTimeEmployee 클래스의 코드가 name = "Rufus"를 수행 할 수 있다고 생각할 것입니다. 글쎄, 그건 안돼.
직원이 필요하지 않습니다. java 파일을 하드 드라이브에 복사하여 Employee 클래스를 확장하는 코드를 작성하십시오. 필요한 파일은 Employee뿐입니다. 수업.