Java

12 [인강] 자바의정석 ch06

Rosie_dev 2020. 12. 21. 13:43

| static 메서드와 인스턴트 메서드

  인스턴트 메서드는 이미 객체가 호출되었으므로 인스턴스 변수 사용가능

  static 메서드는 항상 호출가능

                      객체 없을 수 있으므로 인스턴스 변수 사용불가, 객체생성 후 가능

                      인스턴스 메서드(im) 호출할 수 없다

                      static 메서드 호출가능

  인스턴스 멤버 (인스턴스 메서드, 인스턴스 변수)


| 오버로딩

  한 클래스 안에 같은 이름 메서드를 여러 개 정의하는 것

  void println()

  void println(boolean x)

  void println(char x)

  오버로딩으로 조건

                            메서드 이름이 같아야 한다(작업동일)

                            매개변수 개수 또는 타입이 달라야

                            반환 타입은 영향 없다


| 생성자

  인스턴스가 생성될 때마다 호출되는 '인스턴스 초기화 메서드'

  Time t = new Time(12, 30, 20);

  리턴값이 없고, void를 안 붙임


  기본생성자

  Point( ) { }

 

  class Date_1 {           //생성자가 하나도 없는 경우에는 컴파일러가 기본생성자 자동추가

         int value;

  }

  class Data_2 {

         int value;

         Data_2( ) { }       //기본생성자 추가필요

         Date_2(int x) {

                  value = x;

         }

  }

  class Ex6_11

         public static void main(String[] args) {

                  Data_1 d1 = new Data_1( );

                  Data_2 d2 = new Data_2( );

         }

  }


  class Car {

         String color;

         String gearType;

         int door;

  }

  Car ( ) { }

  Car c = new Car("white", "auto", 4);


| 생성자 this( ), 참조변수 this   //무관

  생성자에서 다른 생성자 호출시 사용, 코드의 중복제거

  다른 생성자 호출시 첫 줄에서만 사용가능

  선언없이 사용가능

  class Car {

         String color;

         String geartype;

         int door;

        Car2( ) {

                        this("white", "auto", 4);      //아래코드와 중복방지

        }

        Car(Stirng c, String g, int d) {

             color = c;

             geartype = g;

             door = d;

        }

  }


  참조변수 this

  인스턴스 자신을 가리키는 참조변수, 인스턴스 메서드와 생성자에서만 사용가능

   lv와 iv 구별에 사용

   Car(Stirng color, String geartype, int door) {

        this.color = color;

        this.geartype = geartype;

        this.door = door;

    }                                      //lv와 구별을 위해 iv에 this를 붙여야 한다. 같은 클래스내 생략가능(이름이 다른 경우)

 


| 변수의 초기화, 멤버변수(iv, cv)의 초기화

  지역변수는 수동 초기화 필요

  class InitTest {

         int x;

         int y = x;      //iv, 자동초기화(null, false, 0)

         void method1( ) {

                int i = 0;

                int j = i;             //lv, 수동초기화

         }

  }


  멤버변수의 초기화

  0. 자동초기화

  1. 명시적 초기화: 대입연산자

      int door = 4;                   //기본형 초기화

      Engine e = new Engine();   //참조형 초기화

  2. 초기화 블럭: { }, static { }, 복잡한 초기화

  3. 생성자: iv 초기화, 복잡한 초기화

  클래스 → 인스턴스 초기화

  자동, 간단 → 복잡 초기화

'Java' 카테고리의 다른 글

14 [인강] 자바의정석 ch07  (0) 2020.12.22
13 [인강] 자바의정석 ch07  (0) 2020.12.21
11 [인강] 자바의정석 ch06  (0) 2020.12.18
10 [인강] 자바의정석 ch06  (0) 2020.12.17
9 [인강] 자바의정석 ch05  (0) 2020.12.16
댓글