1. 부모클래스
public class Parent{
int x;
int y;
String getLocation(){
return x,y;
}
}
2. 자식클래스
public class Child extends Parent{
int z;
String getLocation(){
return x, y, z;
}
}
부모클래스에서는 존재하지 않았던 getLocation의 int z가 자식클래스에서 생성됨
1. parent class
public class Parent{
void parentMethod(){
}
2. child class
public class Child extends parents{
void parentMethod(){ // 오버라이딩
int a = 1;
}
void parentMethod(int x){} // 오버로딩
void childMethod(){}
void childMethod(int x){} // 오버로딩
}
중복정의 | 재정의 | |
---|---|---|
메서드 이름 동일 | 메서드 이름 동일 | |
조건 | 매개변수 갯수/타입 다르게 | 매개변수 갯수/타입 같게 |
반환타입, 접근제한자 상관 없음 | 반환타입 동일, 접근제한자 동일하거나 하위 | |
이용시점 | 매개변수만 다르고 내용이 비슷할 때 | 부모로부터 상속받은 메서드의 일부가 자신과 다를때 |
장점 | 비슷한 기능을 일관된 이름으로 사용 | 객체가 달라도 사용법은 동일 |
1. parent class
public class Parent{
public void sample(){
System.out.println("부모클래스의 메서드 sample");
}
}
2. child class
public class Child extends Parent{
public void sample(){
super.sample(); // ★super 키워드로 상위 클래스의 메서드 호출
System.out.println("자식클래스의 메서드 sample")
}
public static void main(String[]args){
Child abc = new Child(); // Child 객체 생성
abc.sample()
}
}
최종출력:
부모클래스의 메서드 sample
자식클래스의 메서드 sample
public class Sample{
int no;
int price;
int discountPrice;
Sample(int no, int price, int discountPrice){
this.no = no;
this.price = price;
this.discountPrice = discountPrice;
}
Sample(int no, int price){
this.Sample(1, 10000, 8000)
}
}
1. parent class
public class Product{
Product(){}
Product(int no, int price){}
}
2. child class
public class Book extends Product{
String title;
Book(){
super(1, 10000)
title = "자바의 정석"
}
public static void main(String[]args){
Product abc = new Product();
abc.Book(); // 출력 내용:1, 10000, 자바의정석
}
}