클래스는 개념이 좀 많다

알아보자

 

클래스란? 

  -> 객채의 구조와 동작을 정의하는 틀

객체는?

  -> 클래스에서 정의한 구조를 바탕으로 생성된 실제 엔티티 혹은 데이터

 

클래스를 생성하려면 다음과 같이 정의하면 된다

아래 코드는 Person 클래스를 정의하고 있다 

속성으로 name, int를 가지며 생성자를 통해 초기화 하고, method로 introduce를 정의하였다 

// class [클래스이름] { ... }

class Person {
  String name;
  int age;
  
  Person(this.name, this.age);
  
  void introduce() {
    print("안녕, 나이는 $age, 이름은 $name");
  }
}

 

아래코드는 실제로 Person클래스를 사용해서 Person객체를 생성하는 코드이다 

void main(){
  Person p1 = Person('john',24);
  p1.introduce(); // 안녕, 나이는 24, 이름은 john 출력
}

 

클래스는 다음과 같은 구성요소들로 이루어져 있다. 이 같은 구성요소를 클래스의 맴버라고 한다

  -> 속성

    -> 인스턴스 변수(instance variable)

      => 객체에 속해있는 global scope 변수

    -> 지역변수(local variable)

      => method 코드블럭 안에 scoped된 변수

    -> 정적변수(static variable)

      => 클래스 변수라고도 한다 - 객체에 종속되지 않고 클래스 자체에 속하는 변수

      => 같은 클래스를 가지는 객체는 이 변수를 공유한다. 

      => static키워드로 선언한다 

      => Class이름으로 접근한다( Person.[static변수이름] 이런식으로)

      => 따라서 객체를 통해 접근할 수 없다

      => 값을 변경할수 있는데 *매우매우* 조심해서 변경하자. 

 

-> method

    -> 객체의 동작응 정의한다(속성을 변경하거나, 정보를 프린트하거나 등)

    -> 함수와 method차이? 함수는 클래스에 의존하지 않는다 

 

    -> 종류에는 2가지 인스턴스 메서드, 정적 메서드로 나누어진다

    -> 인스턴스 메서드(Instance Method)

      => 객체에 속해있는 method

      => this를 통해 접근 가능함

      => 클래스의 모든 곳에서 접근할 수 있다(scoped)

    -> 정적 메서드(static Method 혹은 class method)

      => method 앞에 'static' 키워드를 붙여야 한다

      => 역시 변수와 마찬가지로 클래스 이름으로 접근한다.

      => *중요* 내부에서 인스턴스 변수 사용 금지 

 

  -> 생성자(constructor)

    -> 기본생성자(default constructor)

      => 자동으로 생성되는 생성자이다 

      => 인스턴스 변수가 모두 초기화 되어있는 상태여야 한다.     

    -> 매개변수 생성자(parameterized constructor)

      => [클래스](this.인스턴스변수);

      => [클래스]([타입] [매개변수]) : this.인스턴스변수;

      => [클래스]([타입] [매개변수]) { this..인스턴스변수; }

      => 위 3가지로 매개변수 생성자를 쓸 수 있다. 

    -> 네임드 생성자(Named constructor)

       => 클래스 method와 같은 형식으로 호출하는 생성자. 예제는 아래와 같다(처음보는 형식이라 적어둠)

Class Car {
  String name;
  List<String> models;
  
  Car.fromList(List values)
    : this.name = values[0],
      this.models = values[1];
}

 

    -> this는 현재 객체를 가르키는 키워드이다. 

      -> this 를 사용해서 맴버 변수와 method에 접근하고 사용할수 있다

+ Recent posts