0) REVIEW
① Object (객체) : 모든 것, Class로 만들어 진다.
② Class(클래스) : 객체를 만들어 내는 틀
③ 접근제한자
ⓐ Private : 클래스 안에서만 사용가능, 상속x
ⓑ Default : 같은 패키지안에서 상속가능
ⓒ Protected : 패키지가 다르더라도 상속받으면 가능
ⓓ Public : 제한이 없다.
1) Inheritance(상속)
package inheritance;
public class Coffee {
// 필드(Field) : 속성(Attribute, Property), 멤버변수(Member Variable), 전역변수...
String origin; // 원산지
int size; // 용량
void smell() {
System.out.println("냄새가 나다");
}
void drink() {
System.out.println("커피를 마시다");
}
/**
* @param args
*/
public static void main(String[] args) {
Coffee c = new Coffee(); // 객체 생성
c.size = 300;
System.out.println(c.size);
Coffee c1 = new Coffee();
c1.size =500;// hashcode를 가지고 있다.
System.out.println(c1.size);
c = c1;
System.out.println(c.size);
System.out.println(c1.size);
}
}
Coffee의 클래스의 drink()를 오버라이딩(메소드 재정의)하고 있다.
package inheritance;
public class Mocha extends Coffee {
boolean isCream;
// private < default < protected < public >> 접근제한자
// private : 클래스 안에서만 접근가능, 상속x
// default : 같은 패키지 안에서 접근가능
// protected : 다른 패키지라도 상속받은 경우 접근가능
// public : 제한x
// 생성자가 하나도 없으면 컴파일러에 의해서 기본생성자가 만들어진다.
public Mocha() {
}
// annotation
@Override
void drink() {
super.drink(); // 부모(super)클래스의 drink메서드도 같이 호출
System.out.println("모카 커피를 마셔요.");
}
/**
* @param args
*/
public static void main(String[] args) {
new Mocha().drink();// Mocha객체 생성
System.out.println(32);
System.out.println("문자");
Coffee m = new Mocha();
Object o = m;
System.out.println(m);
System.out.println(o);
Mocha m2 = new Mocha();
m2.drink();
m.drink();
// 원래 Mocha이므로 Mocha의 drink가 실행 => m의 실체를 알자!!!
// o.drink();
>> 불가능 Object에는 drink()메서드가 정의되어 있지 않기 때문에
// p(m)(x) : m의 타입은 Coffee이므로
p(m2);
p(3); // 참조형이 아니라 기본형이기 때문에 참조형으로 박싱(Integer)
// Wrapper class : Byte, Short, Integer, Long, Double,
Boolean, Character, Float
p("문자");
}
@Override
//
public String toString() {
// TODO Auto-generated method stub
return "나는 모카! 일반 커피가 아니지";
}
// static 이 있을 경우 클래스 소유, 없으면 객체소유
// 객체 : 모든 것
// 클래스 : 객체를 만들어내는 틀
// Static >> 클래스가 로딩(메모리에 적재) 될때 같이 로딩된다.
// 접근할 때 클래스명.메서드명() 이름 형태로 불러온다.
public static void p(Mocha m) { // 유연하지 못하다.
// 자동으로 toString이 실행된다
System.out.println(m.toString());
}
public static void p(Object m) { // 유연하다.
System.out.println(m);
}
}
'Java > Java Advanced' 카테고리의 다른 글
Java Advanced 1일차 두번째) 상속구조 만들기 (0) | 2012.09.10 |
---|