플러터 앱 개발

Chapter 9. 객체 지향 프로그래밍과 Dart A - 클래스와 속성

yuna 2026. 1. 7. 17:58

안녕하시와요?

오늘은 클래스에 대해서 소개를 해보려고 합니다..!

 

요즘 소소하게 앱도 만들어보고 있는데

클래스가 정말 정말 정말 많이 나와요...

 

그래서 복습도 할겸 클래스에 대해서 정리해보려고 합니다!

ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ(제 속마음이 들리시나요)

 

오늘도 화이팅 해봅시당~!!

 


 

 

 

어느날... 성은 지.. 이름은 피티에게 물었다...

 

 

 

"클래스가 뭐야?"

 

 

 

그는 잠시 머뭇거리더니 답했다...

 

클래스는 프로그래밍에서 설계도라고 생각하면 돼

 

 

아하...!

클래스는 같은 성질과 행동을 가진 객체를 만들기 위한 설계도이구나...!

 

 

 

 

 

그리고 나는 물었다..

 

 

 

 

그럼 객체는 뭐야..?

 

 

 

 

 

클래스는 집의 설계도..객체는 실제로 지어진 집이야...

 

 

 

아하 그렇구나...너...정말 똑똑하다...

 

 

 

ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ

여러분 저 미친거 아니예요...정말뤀ㅋㅋㅋㅋㅋㅋㅋㅋㅋ

 

 

 

그냥 설명하면 지루하니까 해봤어요...ㅎ

그치만 이해가 되셨죠???


클래스(Class)

: 객체 지향 프로그래밍의 핵심 개념이자 기본 단위, 객체의 구조와 동작을 정의하는 툴

 

쉽게 말해서, 객체들이 공통적으로 가지는 속성과 행동들을 정의하는 곳이라고 생각하면 됩니다!

 

형태

class [클래스 이름] { … }

class Person {
  String name;
  int age;
  
  Person(this.name, this.age);
  
  void introduce() {
    print('안녕 ? 나는 $age살 $name !');
  }
}

 

 

클래스의 구성: 속성과 메서드

속성: 클래스 안에서 작업을 수행할 때 사용하는 데이터

 

종류

1. 인스턴스 변수: 객체에 속해 있는 변수

class Person {
  String name = '강미래';
  int age = 25;
}

 

특징

1) this를 통해 접근 가능!

  • 클래스 내부에서 현재 객체를 참조할 때 사용
  • 객체를 가리키는 키워드
  • 사용처
    • 클래스에서 클래스 안의 속성이나 메서드를 사용할 때
    • 클래스에서 인스턴트 변수와 메서드에 속한 변수를 구분할 때
    • this는 최대한 덜 쓰는 것이 좋음!

2) 클래스의 모든 곳에서 접근 가능!

class Person {
  String name = '정유남';
	int age = 26;

  void introduce() {
    print('안녕 ? 나는 $age살 $name !');
  }
}

 

3) 객체가 존재하는 동안 계속 메모리 상에 존재(메모리 상에 존재하는 기간을 생명 주기라고 함!)

 

4) 동일한 클래스로 생성한 객체들이어도 각 객체들은 값을 공유하지 않고, 개별적인 값을 가짐

  • 객체를 통해서 매개변수의 값을 바꾸는 것을 막으려면 final로 선언!

 

2. 지역 변수(로컬 변수): 특정 코드 블록 안에 선언된 변수

특징

1) 변수가 선언된 코드 블록 안에서만 사용 가능

class Person {
  String name = '강미래';
	
  void sayName() {
  String nameSentence = '내 이름은 $name !';
  print(nameSentence);
  }
	
  void sayNameAgain() {
  print(nameSentence); // 오류 발생
  }
}

 

2) 변수가 선언된 코드 블록의 실행이 끝나면 메모리 상에서 사라짐

 

3. 정적 변수(클래스 변수): 객체에 종속되지 않고, 클래스 자체에 속하는 변수

class Circle {
  static double pi = 3.14159;
}

static이 붙은 변수는 정적 변수

 

특징

 

1) 클래스 이름을 통해 접근

2) 객체를 통해 접근 불가능-> 객체에 종속된게 아니기 때문!

3) this를 통해 접근 불가능

4) 객체마다 개별적인 값을 갖지 않고, 모든 객체가 서로 값을 공유

 

 

 

총 비교분석!

구분 인스턴스 변수 정적 변수 지역 변수
소속 객체 클래스 함수
선언 위치 클래스 안, 메서드 밖 클래스 안+static 함수/메서드 안
접근 방법 객체.변수 클래스.변수 변수명

 

 

 

메서드는 다음 시간에...총총