public class 자식클래스 extends 부모클래스{
// 자식클래스에서는 부모클래스의 필드 또는 메소드 사용 가능
}
super(값, 값, ...);
=> 생략된 경우 부모클래스의 매개변수가 없는 기본 생성자를 호출하여 객체 생성
=> 생성자에서 다른 생성자를 호출하는 명령은 반드시 첫번째 명령으로 작성
Member.java
Member.java
//회원정보(아이디, 이름)를 저장하기 위한 클래스
public class Member {
private String id;
private String name;
public Member() {
// TODO Auto-generated constructor stub
}
public Member(String id, String name) {
super();
this.id = id;
this.name = name;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void display() {
System.out.println("아이디 = " + id);
System.out.println("이름 = " + name);
}
}
MemberApp.java
MemberApp.java
public class MemberApp {
public static void main(String[] args) {
Member member1 = new Member();
member1.setId("abc123");
member1.setName("홍길동");
member1.display();
System.out.println("======================================");
Member member2 = new Member("xyz789", "임꺽정");
member2.display();
System.out.println("======================================");
}
}
// 아이디 = abc123
// 이름 = 홍길동
// ===========================================
// 아이디 = xyz789
// 이름 = 임꺽정
// ===========================================
MemberEvent.java
MemberEvent.java
public class MemberEvent extends Member {
private String email;
public MemberEvent() {
// super();//부모클래스의 매개변수가 없는 기본 생성자 호출 - 생략 가능
}
public MemberEvent(String id, String name, String email) {
super(id, name);// 부모클래스의 매개변수가 있는 생성자 호출
this.email = email;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
@Override
public void display() {
super.display();// super 키워드로 부모클래스의 숨겨진 메소드 호출
System.out.println("이메일 = " + email);
}
}
MemberEventApp.java
MemberEventApp.java
public class MemberEventApp {
public static void main(String[] args) {
MemberEvent member1 = new MemberEvent();
member1.setId("abc123");
member1.setName("홍길동");
member1.setEmail("abc@aabab.xyz");
member1.display();
System.out.println("======================================");
MemberEvent member2 = new MemberEvent("xyz789", "임꺽정", "xyz@aabab.xyz");
member2.display();
System.out.println("======================================");
}
}
// 아이디 = abc123
// 이름 = 홍길동
// 이메일 = abc@aabab.xyz
// ===================================================
// 아이디 = xyz789
// 이름 = 임꺽정
// 이메일 = xyz@aabab.xyz
// ===================================================
MemberCastApp.java
MemberCastApp.java
public class MemberCastApp {
public static void main(String[] args) {
Member member1 = new Member();
// 참조변수에 저장된 부모클래스의 객체를 사용하여 부모클래스의 메소드 호출
member1.setId("abc123");
member1.setName("홍길동");
member1.display();
}
}
// 아이디 = abc123
// 이름 = 홍길동
MemberCastApp.java
MemberCastApp.java
public class MemberCastApp {
public static void main(String[] args) {
MemberEvent member2 = new MemberEvent();
member2.setId("xyz789");
member2.setName("임꺽정");
member2.setEmail("xyz@naver.com");
member2.display();
}
}
// 아이디 = xyz789
// 이름 = 임꺽정
// 이메일 = xyz@naver.com
MemberCastApp.java
MemberCastApp.java
public class MemberCastApp {
public static void main(String[] args) {
MemberEvent member3=new Member(); //error
}
}
MemberCastApp.java
MemberCastApp.java
public class MemberCastApp {
public static void main(String[] args) {
Member member4 = new MemberEvent();
// 참조변수에 저장된 부모클래스의 객체를 사용하여 부모클래스의 메소드를 호출 가능
// => 참조변수로 자식클래스 객체를 참조할 수 없으므로 자식클래스 호출 불가능
member4.setId("opq456");
member4.setName("전우치");
member4.display();
}
}
// 아이디 = opq456
// 이름 = 전우치
// 이메일 = null
MemberCastApp.java
MemberCastApp.java
public class MemberCastApp {
public static void main(String[] args) {
Member member4 = new MemberEvent();
member4.setId("opq456");
member4.setName("전우치");
((MemberEvent) member4).setEmail("opq@naver.com");
member4.display();
}
}
// 아이디 = opq456
// 이름 = 전우치
// 이메일 = opq@naver.com
public class Car /* extends Object */{
private String modelName;
private String userNmae;
}
public abstract class 클래스명 {
}
접근제한자 abstract 반환형 메소드명 (자료형 매개변수명, ...);