
지난
클래스와 속성 포스팅에서 클래스를 다음과 같이 정리한 바 있다.클래스 = 여러 속성과 메서드를 하나로 묶어서 만든 설계도
클래스라는 설계도에 의해 실제로 만들어진, 생성된 결과물 = 객체 = 인스턴스 = 실체
인스턴스가 가진 변수 (인스턴스 변수) = 필드
메서드에서 그 인스턴스를 가리키는 포인터 = this
상속 시 부모 초기화 = super가 담당
해당 포스팅에서 속성에 대해 알아보았다.
- 인스턴스 변수 (객체 변수)
- 지역 변수 (로컬 변수)
- 정적 변수 (클래스 변수)
이번에는 메서드에 대해 공부해보자.
메서드 (Method)
객체의 동작을 정의하는 함수
속성을 변경하거나 객체를 가지고 특정 작업을 수행
함수와 메서드의 차이
- 메서드: 클래스에 의존함
- 함수: 클래스에 의존하지 않음
void function() {
print("저는 함수입니다");
}
class Class {
void method() {
print("저는 메서드입니다");
}
}
void main() {
function(); // 저는 함수입니다.
Class object = Class();
object.method(); // 저는 메서드입니다.
}메서드의 종류
인스턴스 메서드 (Instance Method)
객체에 속해 있는 메서드
class Dakehiko {
static String author = "이노우에 다케히코";
String? title;
Dakehiko(this.title);
void animeRecommend() {
print("대표작: $title"); //
}
}
void main() {
Dakehiko slamDunk = Dakehiko("슬램덩크");
slamDunk.animeRecommend(); // 대표작: 슬램덩크
Dakehiko vagaBond = Dakehiko("배가본드");
vagaBond.animeRecommend(); // 대표작: 배가본드
print(Dakehiko.author); // 이노우에 다케히코
}
정적 메서드 (Static Method)
클래스에 속해 있는 메서드
class Dakehiko {
static String author = "이노우에 다케히코"; //클래스에 종속된 정적 변수
String? title; // 인스턴스 변수
Dakehiko(this.title); // 생성자
void animeRecommend() {
print("대표작: $title"); // 인스턴스를 통해 호출되는 인스턴스 메서드
}
static void greatAuthor() {
print("위대한 작가 $author"); // 클래스 이름으로 호출되는 정적 메서드
}
}
void main() {
Dakehiko slamDunk = Dakehiko("슬램덩크");
slamDunk
.animeRecommend(); // slamDunk는 인스턴스, "슬램덩크"는 인스턴스 변수의 값, animeRecommend는 인스턴스 메서드.
Dakehiko vagaBond = Dakehiko("배가본드");
vagaBond
.animeRecommend(); // vagaBond는 인스턴스, "배가본드"는 인스턴스 변수의 값, animeRocommend는 인스턴스 메서드.
print(Dakehiko.author); // 이건 클래스의 속성
Dakehiko.greatAuthor(); // greatAuthor는 정적 메서드, 클래스를 통해 호출 가능.
}- 객체를 통해 호출할 수 없음 =
this를 통해 호출할 수 없음
- 코드 블록에서 인스턴스 변수를 사용할 수 없음.
Share article