OOP 기초: 클래스란 무엇인가? 자바 예제
이 기사에서는 Java로 작성된 매우 기본적인 예제를 사용하여 클래스, 객체, 메소드 및 변수의 개념을 설명합니다.
다음 문장을 생각해 봅시다.
a dog called Muffin is barking.
우리는 다음을 알고 있습니다.
개체 지향 프로그래밍을 사용하여 코드 측면에서 이전 시나리오를 설명할 수 있습니다.
우리가 했던 것처럼 시나리오를 액터와 액션으로 나누면 클래스와 클래스 메서드의 의미를 더 잘 이해할 수 있습니다.
우리는 일반적으로 클래스를 액터로 참조할 수 있으며 메서드는 일종의 동작을 설명합니다. 마지막으로 변수는 우리 액터에게 "속해 있는"것으로 볼 수 있습니다.
이제 액터에서 시작하여 이전에 본 것을 단계별로 코드로 변환해 보겠습니다.
public class Dog {
}
방금
Dog
라는 클래스를 만들었습니다.우리는 개가 이름을 가질 수 있도록 할 것입니다.
public class Dog {
private String name;
}
마지막으로, 우리 개는 짖을 것입니다:
public class Dog {
private String name;
public static void bark() {
System.out.println("bau bau");
}
}
우리는 아직 끝나지 않았습니다! 문제는 우리가 지금까지 한 것은 실제 강아지를 위한 청사진을 설계한 것뿐이지 실제로 강아지를 만들지는 않았다는 것입니다.
그리고 여기에 Object라는 개념이 있습니다. 객체는 클래스 인스턴스입니다. 이 예에서는 자신의 이름으로 "살아나는"개입니다.
다음 코드 블록을 고려하고 기본 메서드 내부의 콘텐츠에만 집중하려고 합니다(지금은 모든 이상한 키워드
public static void String[] args
에 대해 걱정하지 마십시오).public class Dog {
private String name;
public static void bark() {
System.out.println("bau bau");
}
public static void main(String[] args) {
Dog muffin = new Dog();
muffin.name = "Muffin";
System.out.println(muffin.name);
Dog.bark();
}
}
메인 메서드 내에서 Muffin이라는 개를 살아나게 만들었습니다.
우리는
new Dog()
를 생성하고 그의 인스턴스 변수name
에 Muffin이라는 이름을 할당했습니다.Dog.bark()
는 어떻습니까? 개 이름을 인쇄하기 위해 클래스 인스턴스muffin
를 사용하고 대신 클래스 키워드Dog
(즉, 청사진)를 사용하여 개가 짖도록 만든 이유가 궁금할 수 있습니다.공정한 질문입니다!
bark()
메서드를 정적 메서드로 선언했기 때문입니다! 그리고 그 이유는 모든 개가 짖기 때문입니다. 짖는 것은 이름이나 품종과 같은 다른 속성에 의존하는 것이 아닙니다. 즉, 특정 개 인스턴스에 의존하지 않습니다.이제 Dog 클래스에 새
greet()
메서드를 추가해 보겠습니다.public class Dog {
private String name;
public static void bark() {
System.out.println("bau bau");
}
public void greet() {
System.out.println("Hello, my name is " + this.name + " and I am a talking dog." );
}
public static void main(String[] args) {
Dog muffin = new Dog();
muffin.name = "Muffin";
System.out.println(muffin.name);
Dog.bark();
muffin.greet();
}
}
보시다시피 마지막 줄에서 인스턴스
muffin
를 사용하여 인스턴스 메서드greet()
를 호출합니다. 왜 그런 겁니까? 모든 (말하는) 개는 이름에 따라 다르게 인사하기 때문입니다. 해당 메서드를 정적으로 만들려고 하면 Dog.this
가 Dog의 인스턴스를 참조하므로 정적 컨텍스트에서 this
를 참조할 수 없다는 컴파일 오류가 발생합니다.마지막 한가지...
한 줄에 특정 이름을 가진 Dog를 인스턴스화하는 생성자를 도입할 수 있습니다. 그것은 우리의 생성자가 될 것입니다:
public Dog(String name) {
this.name = name;
}
기본적으로 인스턴스를 생성할 때 관련 인스턴스 변수에 자동으로 할당하기 위해 매개변수를 도입하고 있습니다.
전체 코드는 다음과 같습니다.
public class Dog {
private String name;
public Dog(String name) {
this.name = name;
}
public static void bark() {
System.out.println("bau bau");
}
public void greet() {
System.out.println("Hello, my name is " + this.name + " and I am a talking dog." );
}
public static void main(String[] args) {
Dog muffin = new Dog("Muffin");
System.out.println(muffin.name);
Dog.bark();
muffin.greet();
}
}
이름은 이제 생성자를 통해 인스턴스에 직접 할당되어 이름을 인수로 전달합니다.
코드의 출력은 다음과 같습니다.
Muffin
bau bau
Hello, my name is Muffin and I am a talking dog.
그것은 객체 지향 프로그래밍의 세계에 대한 우리의 첫 다이빙이었습니다.
기본 OOP 개념을 이해하는 데 이 예제가 유용하다고 생각되면 알려주세요. 어떤 피드백도 환영합니다. 아래에 의견을 남겨주세요!
행복한 코딩
Reference
이 문제에 관하여(OOP 기초: 클래스란 무엇인가? 자바 예제), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/aldotele/oop-fundamentals-what-is-a-class-java-example-3832텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)