오버로딩(Overloading)
- 기존에 없던 새로운 메서드를 정의
- 리턴값만 다르게 갖는 오버로딩은 작성할 수 없음
public class Member{
void test(){
Stsytem.out.println("no parameters");
}
void test(int a, int b){
System.out.println("a:"+a+"b:"+b);
}
}
public class codeTest{
public static void main(String[] args) throws Exception{
Member m = new Member();
m.test()
m.test(1,2);
}
}
오버라이딩(Overriding)
- 상위 클래스에게 상속 받은 메서드를 하위 클래스가 재정의해서 사용
public class codeTest{
public static void main(String[] args) throw Exception{
Seller s = new Seller();
s.sellerName = "YeonHee";
s.goodsName = "Nintendo";
s.print();
}
}
public class Good{
public String goodsName;
public void print(){
System.out.println("GoodName:"+this.goodsName);
}
}
public class Seller extends Goods{
String sellerName;
public void print(){
System.out.println("GoodName:"+this.goodsName);
System.out.println("SellerName:"+this.sellerName);
}
}
상수 final
- 초기화 방식: 1) 선언시 값 지정 2) 생성자를 통해서 초기화
final 필드
- final 필드는 초기값이 저장되면 최종적인 값이 되어 프로그램 도중에 수정할 수 없다.
final int num = 1;
final 객체
final Member meber = new Member();
final 메서드
- 상속받은 클래스에서 부모의 final 메서드 재정의 불가능
class Member{
String name ="yeonhee";
public final void print() {
System.out.println("이름은 :"+name+" 입니다.");
}
}
class Person extends Member{
String name = "yeonhee";
public void print(){}
}
메서드 파라메타에 final 사용
class Member{
String name ="yeonhee";
public void setName(final String name) {
this.name = name;
}
}
class Person extends Member{
Member member = new Member();
member.setName("jeauk");
}