티스토리 뷰

상속 : 

부모클래스(super class) 로 부터 모든 자원을 물려받는 개념

 

반드시 extends 키워드를 이용하여 상속받을 부모클래스를 지정.

단, 한번에 하나의 클래스만 상속받을 수 있다.

 

예)

public class A{

}

 

public class B{

}

 

public class C extends A{    // 가능

}

 

public class C extends A, B{   // 불가능

}

 

public class D extends A{    // 가능

}

 

public class E extends D{    // 가능

}

 

 

상속이 가능한 부모클래스의 변수 및 메서드

 1. 부모와 자식이 같은 패키지에 존재 할 경우

    public int a;  char c;

    private 이 붙은 메서드나 변수는 상속 불가능

    

 2. 부모와 자식이 다른 패키지에 존재 할 경우    

    public int a;  

    private 이 붙은 메서드나 변수는 상속 불가능

    아무것도 없는(default) 메서드나 변수는 상속 불가능

=======================================

 

접근 제한자(지정자)

: 외부로부터 클래스 자신을 보호하기 위해 접근을 제한하는 것.

 

종류

public        : 어디서든지 모두 허용

protected   : 상속되는 자식클래스까지만 허용

default       : 동일 패키지 내에서는 모두 허용

private       : 본인 클래스 내에서만 사용 가능

 

접근 제한자는 클래스 선언, 메서드 선언, 생성자 선언, 변수 선언시

사용 가능.

단, 클래스 선언시 private은 사용 불가 !!!

 

=============================================

 

메서드 선언 기법

 1. Overloading : 동일한 메서드이름을 이용하여 다양한 데이터를 처리할 경우.

조건 : 매개변수의 갯수 또는 동일 갯수일 경우에는 데이터 타입이 달라야 한다 

예) 

public void test(){

}

public void test(int a){ // 가능

}

public void test(String s){ // 가능

}

public void test(int a, int b){ // 가능

}

public void test(int n){ // 불가능 (매개변수 갯수와 데이터타입이 동일)

}

 

2. Override : 반드시 상속이 필요

    부모로부터 물려받은 메서드를 자식 클래스에서 수정하여 사용할 경우

    조건 : 물려받은 메서드의 {    }  내부만 수정 가능.

             만약 메서드 선언부를 수정하면 자식클래스가 선언한 메서드로 변경.

예)

public class A{ // 부모클래스(super class)

    public A(){

    }

    public void test(){ // 부모클래스(super class)가 선언한 메서드

         System.out.println(10+30);

    }

}

public class B extends A{ // 자식 클래스

    public B(){

    }

    public void test(){ // 부모 클래스인 A로부터 물려받은 메서드

         int a=10+30+50; // 수정내용

         System.out.println(a); // 수정내용

    }

}

public class C extends A{ //  자식 클래스

    public C(){

    }

    public int test(){ // 이 메서드는 선언부를 수정하였기 때문에(반환타입변경)

        return 100;   // A클래스가 아닌 C클래스 선언 메서드.

    }

}

public class D extends A{ //  자식(파생) 클래스

    public D(){

    }

    public void test(int n){ // 이 메서드는 선언부를 수정하였기 때문에(매개변수추가)

     System.out.println(n); // A클래스가 아닌 D클래스 선언 메서드

    }

}

============================================

 

클래스 종류

1. 메인 클래스 : public static void main(String[] args){  }  포함

                      main() 메서드는 프로젝트의 메인 스레드(프로세스 개념)로 사용된다.

                      프로젝트 내에는 단 1개만 존재해야 한다.

 

2. 일반클래스 : public static void main(String[] args){  }  포함하지 않는 클래스

                     단, 생성자는 필요

 

3. 파생클래스 : super class에 의해서 선언된 클래스

                     부모클래스를 상속받는 자식클래스

 

4. 추상클래스 : abstract 키워드를 이용하여 선언

   예) public abstract class Test{

        }

 

5. interface 클래스 : interface 키워드를 이용하여 선언

   예) public interface Test{

        }     

============================================

 

프로젝트를 진행 할 때, 코드를 먼저 짜려고 하지 말고 내부 로직을 생각 후 해야할 작업을 먼저 주석 처리한 뒤 메서드 껍데기만 만들어놓은 상태에서 진행한다.

또한 데이터 흐름도를 계속 그리는 연습이 필요하다.

 

 

==========================================================

 

오늘의 예제: 주어진 이미지 파일과 데이터를 활용하여 간단한 html 파일을 만드는 코드를 작성하라.

결과 페이지 화면: 

 

내 코드: 

github.com/Choonham/Choonham-2020.03.10-Spring-Class/tree/master/book_java_html/src/com/choonham

 

Choonham/Choonham-2020.03.10-Spring-Class

Contribute to Choonham/Choonham-2020.03.10-Spring-Class development by creating an account on GitHub.

github.com

Feedback: BookClass와 PressClass의 상속을 제대로 구현하지 못하여 강사님의 코드를 보고 첨삭했다. 이외의 부분은 고칠 부분이 없이 잘 구동이 되었다.

 

모범 답안:

github.com/Choonham/Choonham-2020.03.10-Spring-Class/tree/master/book_java_html_answer/src/com/choonham

 

Choonham/Choonham-2020.03.10-Spring-Class

Contribute to Choonham/Choonham-2020.03.10-Spring-Class development by creating an account on GitHub.

github.com

끝!

반응형
Comments