본문 바로가기

개발자정보

Java 클래스(Classes)와 객체(Objects)

반응형

자바는 객체 지향 프로그래밍 언어입니다.

자바는 클래스와 오브젝트 그리고 속성과 메서드로 이루어 집니다.

예를 들어 현실에서 자동차는 객체이다. 

그 차는 무게와 색깔, 그리고 운전과 브레이크와 같은 방법들과 같은 속성들을 가지고 있다.

클래스는 객체 생성자 또는 객체를 생성하기 위한 "청사진"과 같습니다.

 

public class Main {
  int x = 5;
}
public class Main {
  int x = 5;

  public static void main(String[] args) {
    Main myObj = new Main();
    System.out.println(myObj.x);
  }
}

 

public class Main {
  int x = 5;

  public static void main(String[] args) {
    Main myObj1 = new Main();  // Object 1
    Main myObj2 = new Main();  // Object 2
    System.out.println(myObj1.x);
    System.out.println(myObj2.x);
  }
}

 

class Second {
  public static void main(String[] args) {
    Main myObj = new Main();
    System.out.println(myObj.x);
  }
}

C:\Users\Your Name>javac Second.java

 

 

Java 클래스 속성
아래의 예에서 x, y에 대해 "변수"이다. 그것이 클래스의 속성이다.

클래스 속성이 클래스 내부의 변수라고 할 수 있습니다.

public class Main {
  int x = 5;
  int y = 3;
}
public class Main {
  int x = 5;

  public static void main(String[] args) {
    Main myObj = new Main();
    System.out.println(myObj.x);
  }
}

 

public class Main {
  int x;

  public static void main(String[] args) {
    Main myObj = new Main();
    myObj.x = 40;
    System.out.println(myObj.x);
  }
}

 

 

자바 클래스 메서드
자바 메소드(Methods)는 클래스 내에서 선언되고 메소드가 특정 작업을 수행합니다.

public class Main {
  static void myMethod() {
    System.out.println("Hello World!");
  }
}
public class Main {
  static void myMethod() {
    System.out.println("Hello World!");
  }

  public static void main(String[] args) {
    myMethod();
  }
}

 

자바 컨스트럭터(Constructors)

자바의 생성자는 객체를 초기화하는 데 사용되는 메서드입니다.

클래스의 개체가 생성되면 생성자가 호출됩니다. 개체 속성의 초기 값을 설정하는 데 사용할 수 있습니다.

// Create a Main class
public class Main {
  int x;  // Create a class attribute

  // Create a class constructor for the Main class
  public Main() {
    x = 5;  // Set the initial value for the class attribute x
  }

  public static void main(String[] args) {
    Main myObj = new Main(); // Create an object of class Main (This will call the constructor)
    System.out.println(myObj.x); // Print the value of x
  }
}

Modifiers

public 키워드는 액세스 한정자로, 클래스, 속성, 메서드 및 생성자에 대한 액세스 수준을 설정하는 데 사용됩니다.

우리는 수정자를 두 그룹으로 나눕니다.

액세스 한정자 - 액세스 수준을 제어합니다.
비액세스 수정자 - 접근 단계를 제어하지 않지만 다른 기능을 제공합니다.

 

Access Modifiers

For classes, you can use either public or default:

ModifierDescriptionTry it
public The class is accessible by any other class
default The class is only accessible by classes in the same package. This is used when you don't specify a modifier. You will learn more about packages in the Packages chapter

For attributes, methods and constructors, you can use the one of the following:

ModifierDescriptionTry it
public The code is accessible for all classes
private The code is only accessible within the declared class
default The code is only accessible in the same package. This is used when you don't specify a modifier. You will learn more about packages in the Packages chapter
protected The code is accessible in the same package and subclasses. You will learn more about subclasses and superclasses in the Inheritance chapter

Non-Access Modifiers

For classes, you can use either final or abstract:

ModifierDescriptionTry it
final The class cannot be inherited by other classes (You will learn more about inheritance in the Inheritance chapter)
abstract The class cannot be used to create objects (To access an abstract class, it must be inherited from another class. You will learn more about inheritance and abstraction in the Inheritance and Abstraction chapters)

For attributes and methods, you can use the one of the following:

ModifierDescription
final Attributes and methods cannot be overridden/modified
static Attributes and methods belongs to the class, rather than an object
abstract Can only be used in an abstract class, and can only be used on methods. The method does not have a body, for example abstract void run();. The body is provided by the subclass (inherited from). You will learn more about inheritance and abstraction in the Inheritance and Abstraction chapters
transient Attributes and methods are skipped when serializing the object containing them
synchronized Methods can only be accessed by one thread at a time
volatile The value of an attribute is not cached thread-locally, and is always read from the "main memory"

 

Java Encapsulation

캡슐화의 의미는 "중요한" 데이터가 사용자로부터 숨겨져 있는지 확인하는 것입니다. 이를 위해서는 다음을 수행해야 합니다.

클래스 변수를 비공개로 선언하다
공용 가져오기 및 설정 방법을 제공하여 개인 변수의 값을 액세스하고 업데이트합니다.

public class Person {
  private String name; // private = restricted access

  // Getter
  public String getName() {
    return name;
  }

  // Setter
  public void setName(String newName) {
    this.name = newName;
  }
}

 

public class Main {
  public static void main(String[] args) {
    Person myObj = new Person();
    myObj.name = "John";  // error
    System.out.println(myObj.name); // error 
  }
}

 

참고자료 : https://www.w3schools.com/java

 

 

 

반응형