OOP (Object Oriented Programming) : 객체지향 

1. 객체지향 개념 

2. 메서드와 오버로드( OverLoad ), 변수 유효 범위 

3. 생성자 , 생성자 중복(Overload) 

4. this, super 키워드 

5. 클래스

6. 인터페이스, 추상클래스

7. 클래스 상속,  인터페이스 상속 , 추상 클래스 상속

 

oop (Object Oriented Programming) : 객체지향 

객체지향 개념  : 하나의 클래스를 객체라 한다

 ( 클래스=모듈(단위프로그램))

 ( 클래스는 레퍼런스 자료형 이다 )


1. 객체지향 4 대 특징

 ☞ 캡슐화 , 은익화

 ☞ 상속 

 ☞ 다형성 ( Overload, Overriding)

 ☞ 추상화 (복잡한것을 단순화 )

     클래스 설계자 입장 

     클래스 사용자 입장 


다형성(Polymorphism)이란,  한가지로 여러 가지의 일을 한다는 뜻이다.

 프로그램에서 하나의 형태로 여러 가지 작업을 하는것이 바로 

다형성의 뜻 입니다   

 의미(semantics)는 하나지만 실제 형태는 여러 가지가 될 수 있다는 말이다



먹는다( ){ 

    내용: 과자를 먹는다

  }


먹는다( ){

  내용: 밥을 먹는다

  }


먹는다( ){

   내용: 과일 먹는다

 }


다형성은  객체지향 프로그래밍 언어에서

 "오버로딩 (overloading)", "오버라이딩 (overriding)"의 형태로 나타난다.


* OverLoad (오버로드)

   1. 하나의 클래스 내에 이름이 같은 메서드가 여러개인 경우 

   2. 구분은 매개변수(인수) 로 한다 , 인수 갯수가 다르거나 , 인수자료형이 달아야 한다 

     ------------------------------------ 

       class AA

          {

             void   aa(){}

             int    aa(int a){}

             String aa(String name){}

          }

     ------------------------------------   

   3. 확장(상속)이 가능하다

   4. 리턴형은 같아도 달라도 상관없다 



* Overrding (오버라이딩)

   1. 상속 받은 메서드 내용 재정의 

   2. 리턴형, 인수개수 , 인수자료형은 반드시 같아야 한다 


   3. 접근제한자 상위와 같거나 , 더 넓은 개념으로 사용하면 된다

      ( 상위의 proptected 는   public 사용가능 하다 )

   4. 상속 관계로서 사용 가능 

   5. 또 다른 클래스로 , 확장(상속)가능 하다 


----------------------------------------------------------------

클래스 상속

----------------------------------------------------------------

  class 클래스이름

   {

     // 변수 선언 

     private int age ; // 은폐필드 ( 자신의 클래스 내에서만 사용 가능)

     생략    int age;  // 같은 패키지 내에서 사용 가능 

     proptected String name ; // 보호필드 ( 자신의 클래스와 , 상속 받은 클래스에서 사용 가능 )

                                              수퍼클래스   ,   파생클래스

     public  String pum;// 공개필드 ( 어디서나 사용 가능)


     // 메서드 

     private 리턴형 메서드명(){}

     생략    리턴형 메서드명(){}

     protected  리턴형 메서드명(){}

     public  리턴형 메서드명(){}

   }

  class 클래스이름2 extends 클래스이름 implements 인터페이스명

   {

   }

----------------------------------------------------------------

* 메서드란 

  기본적으로 프로그램 명령문의 집합이며, 자바에서는 실행의 기본 단위가 된다 

  메서드는 클래스에 속한 일 부분이다 


* 클래스란 

  하나 이상의 변수, 또는 메서드를 포함하고 있는 변수와 메서드 집합체이다 

  하나의 단위 프로그램이다( 모듈)


* 자바 프로그램이란 

  하나 이상의 클래스로 구성된 클래스 집합체이다 .

  저장은 main() 이 소속해 있는 클래스 이름으로 저장 한다

  

프로그램을 실행하는 동안에  동일 클래스나 , 다른클래스에 있는 메서드를 호출할 수 있다

프로그램 코드는 항상 메서드내에 존재해야 하며, 메서드는 항상 클래스내에 존재해야 한다 


메서드

------------------------------------------------

메서드 기본 형식 

------------------------------------------------

[접근제한자] 리턴형 메서드명(인수)

{

   처리내용 ;

}

------------------------------------------------

[접근제한자] [static] 리턴형 메서드명(인수) throws ExceptionList

{

   처리내용 ;

}

------------------------------------------------

public static void main(String args[]) throws IOException

{

}

------------------------------------------------

 

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

 <<< 메서드 호출  >>>

  자신의 클래스에서는 메서드 호출 ==> 메서드명(인수값)

  다른클래스의  메서드 호출 ==> 객체생성하고, 객체.메서드(인수값)

  static 메서드 호출 =====> 클래스이름.메서드(인수값)  ex) Math.random()

                                    객체생성하고, 객체.메서드()


<< static 메서드들  >>=== java.lang.Math


public static double abs(double a) ==> 절대값

public static double ceil(double a) ==> 올림값

public static double floor(double a) ==> 내림값

public static double round(double a) ==> 사사오입 

public static double max(double a,double b) ==> 둘 중 큰값를리턴

public static double min(double a,double b) ==> 둘 중작은 값를리턴



static 메서드 

- static 메서드는 static으로 선언된 변수,메서드만 호출 가능하다 

- Math.max(5,2) => static 으로 선언된 메서드는 객체생성 않고도 호출가능 

 클래스.메서드();

- static 변수는 모든 객체가 그를 공유 할 수 있다 

- static 메서드에서는 this 사용 못함 : 자신을 2번 지칭하는 것이므로  


접근제한자 ( 접근 지정자)


 1. private : 자신의 클래스 내에서만 접근 가능 

 2. 생략 :    같은 패키지 내에서 접근 가능 

 3. protected : 자신의 클래스(수퍼클래스)와 파생 클래스 에서만  접근 가능

 4. public : 어디서나 접근 가능 


변수 유효 범위 

 - 전역변수 : 메서드 외부, 클래스 내부에 선언된 변수(자동 초기화 된다)

 - 지역변수 : 메서드 내에서 선언한 변수(자동 초기화 안된다)


 * 전역 변수 

   - 은폐필드 : private 으로 선언된 필드(변수) ( 자신의 클래스에서만 접근 가능)

   - 보호필드 : protected 으로 선언된 변수(자신의클래스와 파생 클래스에서만 접근 가능)

   - 공개필드 : public 으로 선언된 변수(어디서나 접근 가능)


<끝>

Posted by 홍이홍이
,