Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

Full-Stack 개발자가 되려는 작은 개발자의 블로그

객체 지향 실습1 본문

강의 정리/Java

객체 지향 실습1

jhjin 2020. 3. 16. 16:50

객체

    ▶ 상태(State)는 데이터를 저장하는 필드(Field)라고 함.

    ▶ 필드는 고유값을 저장하는 필드와 기능을 처리하기 위해 필요한 가변값을 저장하는 필드가 있다.

 

객체의 종류

    1. 완성품에 해당하는 객체 ▶ 프로그램

    2. 부품에 해당하는 객체

    3. 정보를 저장하는 객체

 

필드(변수)의 종류

     ▶ 고유값(변경되지 않는 값)

     ▶ 가변값(변경되는 값)

 

객체, 클래스, 인스턴스

     ▶ 싱테와 기능을 가지고 있는 고유 단위  ▶객체(Object)

     ▶ 자바에서 객체를 만들기 위한 설계도/틀  ▶클래스(Class)

     ▶ Class로 만든(new) 객체  ▶인스턴스(Instance)

객체 지향의 4대 특성

    1. 캡슐화(정보은닉)

         ▶ 상태 + 기능 =객체

         ▶ 변수 + 메소드 = 클래스

         ▶ 메소드 : 가변값을 처리하는 기능을 제공

         

         정보은닉을 위한 장치 접근 제어자

             - 접근 제어자

                *public : 접근 제한 없음

                *default(기본) : 같은 패키지(폴더)에서는 제한 없음

                *protected : 상속을 받을 경우 다른 패키지여도 접근 가능

                *private : 접근 불가(자신의 클래스에서만 접근 가능)

             - 기타 제어자(접근 제어자가 아닌 제어자)

                *final(상수)

                *abstract(추상화)

            ※ 클래스의 public은 파일 당 하나(main이 생기는 클래스)만 생긴다.

             

             변수를 접근제어하고 메소드를 사용하면 좋은 점

    2. 상속

        ▶ 부모로부터 어떤 [성질]을 물려 받는 것
        ▶ 기존의 클래스(부모 클래스)를 재상용해서 새로운 클래스를 작성하는 방법
        ▶ 기존 클래스 멤버 + 새로운 멤버 = 새로운 class
        ▶ 기존 클래스를 '부모', '조상' class
        ▶ 새 클래스를 '자식', '자손' class

    

        ※ 상속이 안되는 멤버 ▶ 생성자

 

        상속의 장점
            1. 클래스의 간결화 ▶ 중복 코드 작성이 불필요.
            2. 클래스 관리 용이 ▶ 클래스를 계층적으로 분류 및 관리
            3. 소프트웨어의 생산성이 향상됨. ▶ 클래스의 재사용성과 확장이 용이.
                                                        ▶ 새로운 클래스의 작성에 속도 빠름 
            ※ 부모 클래스(super class)의 모든 멤버는 자손 클래스에 포함된다.

 

        클래스 간의 관계
             1. 상속 관계 : is a
             2. 포함 관계 : has a

        ▶ 자바에서 클래스의 상속은 단일 상속만 지원(다중 상속 불가) 
        ▶ 여러 클래스를 통합 할 경우 주가되는 하나의 클래스를 상속받고 나머지 클래스는 포함관계로 활용.
        ▶ 다중 상속은 불가하지만, 다단 상속은 가능
        ▶ 모든 클래스는 하나의 조상을 갖는다. > Object 클래스

 

        오버라이딩(Overriding)
            - 부모 클래스의 메소드를 자손 클래스에서 새로 정의하는 것.
            - 반환형, 이름, 매개변수는 동일하지만, 정의된 내용이 다름.
            - 부모 클래스의 메소드가 자손 클래스에서 사용하기에 맞지 않을 때, 부모 클래스이 메소드를 덮어써서 새로                 운 메소드로 다시 만드는 작업.
            - 자손 클래스의 인스턴스에서는 부모 클래스의 메소드를 없는 것으로 처리(메소드가 없어지는 것은 아니며,                   부모 클래스의 인스턴스에서는사용 가능함.)
            - 부모 클래스의 모든 메소드를 재정의하는 것이 아니라 변경이 필요한 메소드만 재정의 함.

 

package package1;

public class A {
	private int pri;
	int def;
	protected int pro;
	public int pub;
}

package package1;

public class B extends A{
	void set() {
//		pri=1; // private 멤버는 자손 클래스에서 접근 불가!
		def=2;
		pro=3;
		pub=4;
	}
}
package package1;

public class D {
	public void set() {
		A a=new A();
//		a.pri=100;
		a.def=200;
		a.pro=300;
		a.pub=400;
	}
}

//////////////////////////////////////다른 패키지///////////////////////////////////////////
package package2;
import package1.A;

public class C extends A{
	void set() {
//		pri=10; // private 멤버는 자손 클래스에서 접근 불가!
//		def=20; // default 멤버는 다른 패키지 자손 클래스에서 접근 불가!
		pro=30;
		pub=40;
	}
}

package package2;
import package1.A;

public class E {
	public void set() {
		A a=new A();
//		a.pri=1000;
//		a.def=2000;
//		a.pro=3000; //상속의 경우에만 다른 패키지에서 접근 가능
		a.pub=4000;
	} 
}
Comments