##Chapter7 객체지향 프로그래밍2

###5. 다형성(polymorphism)

####5.1. 다형성이란?
조상클래스 타입의 참조변수로 자손클래스의 인스턴스를 참조할 수 있도록 하였다.
 
    CaptionTv c = new CaptionTv();
    Tv t = new CaptionTv();
    CaptionTv c = new Tv();  //컴파일 에러 발생
   

####5.2. 참조변수의 형변환
자손 -> 조상 (Up-casting) : 생략가능.
자손 <- 조상 (Down-casting) : 생락불가.
 
    Car car = null;
    FireEngine fe = new FireEngine();
    FireEngine fe2 = null;
   
    car = fe;  //car = (Car)fe; 형변환 생략.
    fe2 = (FireEngine)car;  //생략불가.
   

####5.3. instanceof연산자
어떤 타입에 대한 instanceof연산의 결과가 true라는 것은 검사한 타입으로 형변환이 가능하다는 것을 뜻한다.

####5.6. 여러 종류의 객체를 하나의 배열로 다루기
 Product p1 = new Tv();
 Product p2 = new Computer();

Product타입의 참조변수 배열로 처리

 Product p[] = new Product[2];
 p[0] = new Tv();
 p[1] = new Computer();

Vector클래스 사용

 Vector item = new Vector();
   

<br>
###6. 추상클래스(abstract class)
 
    abstract class 클래스이름 {
     //...
    }
   

<br>
###7. 인터페이스(interface)
 
    interface 인터페이스이름 {
     (public static final) 타입 상수이름 = 값;
        (public abstract) 메서드이름(매개변수목록);
    }
   

####7.4. 인터페이스의 구현
구현한다는 의미의 키워드 'implements' 사용.

 

ch7객체지향2-2.md

 

'CDG 3기 > JAVA의정석' 카테고리의 다른 글

스터디 실습 문제 1  (0) 2015.09.21
스터디 이론 문제  (0) 2015.09.21
ch7 객체지향프로그래밍2-1  (0) 2015.09.21
ch6 객체지향프로그래밍1-2  (0) 2015.09.21
ch6 객체지향프로그래밍1-1  (0) 2015.09.21
Posted by 이선민이★
,

##Chapter7 객체지향 프로그래밍2

###1. 상속

####1.1. 상속의 정의와 장점

조상 클래스 - 부모(parent)클래스, 상위(super)클래스, 기반(base)클래스.
자손 클래스 - 자식(child)클래스, 하위(sub)클래스, 파생된(derived)클래스.
 
    class Child extends Parent {
     //...
    }
   

####1.4. 단일 상속(single inheritance)

<br>
###2. 오버라이딩

####2.1. 오버라이딩이란?
조상 클래스로부터 상속받은 메서드의 내용을 변경하는 것.

####2.2. 오버라이딩의 조건
자손 클래스에서 오바라이딩하는 메서드는 조상클래스의 메서드와

*  이름이 같아야 함.
* 매개변수가 같아야 함.
* 리턴타입이 같아야 함.

####2.3. 오버로딩 vs. 오버라이딩
`오버로딩(overloadin)|기존에 없는 새로운 메서드를 정의하는 것(new)`
`오버라이딩(overriding)|상속받은 메서드의 내용을 변경하는 것(change, modify)`

<br>
###3. package와 import

<br>
###4. 제어자

####4.1. 제어자란?
접근 제어자 : public, protected, default, private.
그 외 : static, final, abstract, native, transient, synchronized, volatile, strictfp.

####4.2. static - 클래스의, 공통적인
static이 사용될 수 있는 곳 : 멤버변수, 메서드, 초기화 블럭.

####4.3. final - 마지막의, 변경될 수 없는
final이 사용될 수 있는 곳 : 클래스, 메서드, 멤버변수, 지역변수.

####4.5. abstract - 추상의, 미완성의
abstract가 사용될 수 있는 곳 : 클래스, 메서드.

####4.9. 제어자(modifier)의 조합.
* 메서드에 static과 abstract를 함께 사용할 수 없음.
 * static메서드는 몸통이 있는 메서드에만 사용 가능.
* 클래스에 abstract와 final을 동시에 사용할 수 없음.
 * final은 클래스를 확장할 수 없다는 의미이고, abstract는 상속을 통해서 완성된다는 의미로 서로 모순됨.
* abstract메서드의 접근 제어자가 private일 수 없음.
 * abstract메서드는 자손클래스에서 구현해주어야 하는제 private면 자손 클래스에 접근할 수 없음.
* 메서드에 private와 final을 같이 사용할 필요는 없음.
 * 접근 제어자가 private인 메서드는 오버라이딩될 수 없기 때문에 둘 중 하나만 사용해도 충분함.

 

ch7객체지향2-1.md

 

'CDG 3기 > JAVA의정석' 카테고리의 다른 글

스터디 이론 문제  (0) 2015.09.21
ch7 객체지향프로그래밍2-2  (0) 2015.09.21
ch6 객체지향프로그래밍1-2  (0) 2015.09.21
ch6 객체지향프로그래밍1-1  (0) 2015.09.21
ch5 배열  (0) 2015.09.21
Posted by 이선민이★
,

##Chapter6 객체지향 프로그래밍1

###4. 메서드 오버로딩(method overloading)

####4.1. 메서드 오버로딩이란?
한 클래스 내에 같은 이름의 메서드를 여러 개 정의하는 것.

####4.2. 오버로딩의 조건
* 메서드 이름이 같아야 함.
* 매개변수의 개수 또는 타입이 달라야 함.
* 매개변수는 같고 리턴 타입이 다른 경우는 성립X

####4.3. 오버로딩의 예
 
    void println()
    void println(boolean x)
    void println(char x)
    void println(char[] x)
    void println(double x)
    void println(float x)
    void println(int x)
    void println(long x)
    void println(Object x)
    void println(String x)
   

</br>
###5. 생성자
생성자의 조건
 
    생성자의 이름은 클래스의 이름과 같아야 함.
    생성자는 리턴값이 없음.
   

####5.3. 매개변수가 있는 생성자
 
 Car() {} //기본 생성자
    Car(String s,Sting g, int d);
   
####5.4. 생성자에서 다른 생성자 호출하기
this(), this

    car() {
     this("while","auto",4);
    }
   
    car(String color)
    {
     this(color, "auto", 4);
    }

 

ch6객체지향1-2.md


'CDG 3기 > JAVA의정석' 카테고리의 다른 글

ch7 객체지향프로그래밍2-2  (0) 2015.09.21
ch7 객체지향프로그래밍2-1  (0) 2015.09.21
ch6 객체지향프로그래밍1-1  (0) 2015.09.21
ch5 배열  (0) 2015.09.21
ch4 조건문과반복문  (0) 2015.09.21
Posted by 이선민이★
,