logo

Java의 객체 및 클래스

  1. 자바의 객체
  2. 자바 클래스
  3. Java의 인스턴스 변수
  4. 자바의 메소드
  5. 학생의 기록을 유지하는 객체 및 클래스의 예
  6. 익명 개체

이 페이지에서는 Java 객체와 클래스에 대해 알아봅니다. 객체지향 프로그래밍 기법에서는 객체와 클래스를 이용하여 프로그램을 설계합니다.

Java의 객체는 물리적 엔터티이자 논리적 엔터티인 반면, Java의 클래스는 논리적 엔터티일 뿐입니다.

자바에서 객체란 무엇인가

자바의 객체

상태와 동작이 있는 엔터티는 객체(예: 의자, 자전거, 마커, 펜, 테이블, 자동차 등)로 알려져 있습니다. 이는 물리적 또는 논리적(유형 및 무형)일 수 있습니다. 무형물체의 예로는 은행 시스템이 있습니다.

객체에는 세 가지 특성이 있습니다.

    상태:객체의 데이터(값)를 나타냅니다.행동:입금, 출금 등과 같은 객체의 동작(기능)을 나타냅니다.신원:객체 ID는 일반적으로 고유 ID를 통해 구현됩니다. ID 값은 외부 사용자에게 표시되지 않습니다. 그러나 이는 각 객체를 고유하게 식별하기 위해 JVM에서 내부적으로 사용됩니다.
Java의 객체 특성

예를 들어 Pen은 객체입니다. 그 이름은 레이놀즈입니다. 색상은 흰색이며 상태로 알려져 있습니다. 쓰기에 사용되므로 쓰기가 그 동작입니다.

객체는 클래스의 인스턴스입니다. 클래스는 객체가 생성되는 템플릿 또는 청사진입니다. 따라서 객체는 클래스의 인스턴스(결과)입니다.

객체 정의:

  • 객체는 실제 존재 .
  • 객체는 런타임 엔터티 .
  • 개체는 상태와 행동을 가지고 있는 실체 .
  • 개체는 클래스의 인스턴스 .

Java의 클래스 란 무엇입니까?

클래스는 공통 속성을 갖는 개체 그룹입니다. 객체가 생성되는 템플릿 또는 청사진입니다. 논리적 엔터티입니다. 육체적일 수는 없습니다.

Java의 클래스에는 다음이 포함될 수 있습니다.

    필드 행동 양식 생성자 블록 중첩 클래스 및 인터페이스
자바 클래스

클래스를 선언하는 구문:

 class { field; method; } 

Java의 인스턴스 변수

클래스 내부에 생성되지만 메소드 외부에 생성되는 변수를 인스턴스 변수라고 합니다. 인스턴스 변수는 컴파일 타임에 메모리를 얻지 못합니다. 객체나 인스턴스가 생성될 때 런타임에 메모리를 얻습니다. 이것이 인스턴스 변수로 알려진 이유입니다.


자바의 메소드

Java에서 메소드는 객체의 동작을 노출하는 데 사용되는 함수와 같습니다.

방식의 장점

  • 코드 재사용성
  • 코드 최적화

Java의 새로운 키워드

new 키워드는 런타임에 메모리를 할당하는 데 사용됩니다. 모든 객체는 힙 메모리 영역에서 메모리를 얻습니다.


객체 및 클래스 예: 클래스 내의 main

이 예에서는 ID와 이름이라는 두 개의 데이터 멤버가 있는 Student 클래스를 만들었습니다. 새로운 키워드로 Student 클래스의 객체를 생성하고 객체의 값을 출력하고 있습니다.

여기서는 클래스 내부에 main() 메서드를 만듭니다.

파일: Student.java

 //Java Program to illustrate how to define a class and fields //Defining a Student class. class Student{ //defining fields int id;//field or data member or instance variable String name; //creating main method inside the Student class public static void main(String args[]){ //Creating an object or instance Student s1=new Student();//creating an object of Student //Printing values of the object System.out.println(s1.id);//accessing member through reference variable System.out.println(s1.name); } } 
지금 테스트해보세요

산출:

 0 null 

객체 및 클래스 예: 클래스 외부의 main

실시간 개발에서는 클래스를 생성하고 다른 클래스에서 사용합니다. 이전 방법보다 더 나은 접근 방식입니다. 다른 클래스에 main() 메소드가 있는 간단한 예를 살펴보겠습니다.

js 세트

다양한 Java 파일이나 단일 Java 파일에 여러 클래스가 있을 수 있습니다. 하나의 자바 소스 파일에 여러 개의 클래스를 정의하는 경우에는 main() 메소드를 가지는 클래스명으로 파일명을 저장하는 것이 좋다.

파일: TestStudent1.java

 //Java Program to demonstrate having the main method in //another class //Creating Student class. class Student{ int id; String name; } //Creating another class TestStudent1 which contains the main method class TestStudent1{ public static void main(String args[]){ Student s1=new Student(); System.out.println(s1.id); System.out.println(s1.name); } } 
지금 테스트해보세요

산출:

 0 null 

객체를 초기화하는 3가지 방법

Java에서 객체를 초기화하는 방법에는 3가지가 있습니다.

  1. 참조변수별
  2. 방법별
  3. 생성자별

1) 객체와 클래스의 예: 참조를 통한 초기화

객체를 초기화한다는 것은 객체에 데이터를 저장하는 것을 의미합니다. 참조 변수를 통해 객체를 초기화하는 간단한 예를 살펴보겠습니다.

파일: TestStudent2.java

 class Student{ int id; String name; } class TestStudent2{ public static void main(String args[]){ Student s1=new Student(); s1.id=101; s1.name='Sonoo'; System.out.println(s1.id+' '+s1.name);//printing members with a white space } } 
지금 테스트해보세요

산출:

 101 Sonoo 

또한 참조 변수를 통해 여러 개체를 만들고 그 안에 정보를 저장할 수도 있습니다.

파일: TestStudent3.java

 class Student{ int id; String name; } class TestStudent3{ public static void main(String args[]){ //Creating objects Student s1=new Student(); Student s2=new Student(); //Initializing objects s1.id=101; s1.name='Sonoo'; s2.id=102; s2.name='Amit'; //Printing data System.out.println(s1.id+' '+s1.name); System.out.println(s2.id+' '+s2.name); } } 
지금 테스트해보세요

산출:

 101 Sonoo 102 Amit 

2) 객체와 클래스의 예: 메소드를 통한 초기화

이 예에서는 Student 클래스의 두 객체를 생성하고 insertRecord 메소드를 호출하여 이러한 객체에 대한 값을 초기화합니다. 여기서는 displayInformation() 메소드를 호출하여 객체의 상태(데이터)를 표시하고 있습니다.

파일: TestStudent4.java

 class Student{ int rollno; String name; void insertRecord(int r, String n){ rollno=r; name=n; } void displayInformation(){System.out.println(rollno+' '+name);} } class TestStudent4{ public static void main(String args[]){ Student s1=new Student(); Student s2=new Student(); s1.insertRecord(111,'Karan'); s2.insertRecord(222,'Aryan'); s1.displayInformation(); s2.displayInformation(); } } 
지금 테스트해보세요

산출:

 111 Karan 222 Aryan 
값이 있는 Java의 객체

위 그림에서 볼 수 있듯이 객체는 힙 메모리 영역에서 메모리를 가져옵니다. 참조변수는 힙 메모리 영역에 할당된 객체를 참조한다. 여기서 s1과 s2는 모두 메모리에 할당된 객체를 참조하는 참조변수이다.


3) 객체와 클래스의 예: 생성자를 통한 초기화

나중에 Java의 생성자에 대해 알아 보겠습니다.


개체 및 클래스 예: Employee

직원의 기록을 유지 관리하는 예를 살펴보겠습니다.

파일: TestEmployee.java

 class Employee{ int id; String name; float salary; void insert(int i, String n, float s) { id=i; name=n; salary=s; } void display(){System.out.println(id+' '+name+' '+salary);} } public class TestEmployee { public static void main(String[] args) { Employee e1=new Employee(); Employee e2=new Employee(); Employee e3=new Employee(); e1.insert(101,'ajeet',45000); e2.insert(102,'irfan',25000); e3.insert(103,'nakul',55000); e1.display(); e2.display(); e3.display(); } } 
지금 테스트해보세요

산출:

그렇지 않으면 자바라면
 101 ajeet 45000.0 102 irfan 25000.0 103 nakul 55000.0 

객체 및 클래스 예: 직사각형

Rectangle 클래스의 레코드를 유지하는 또 다른 예가 있습니다.

파일: TestRectangle1.java

 class Rectangle{ int length; int width; void insert(int l, int w){ length=l; width=w; } void calculateArea(){System.out.println(length*width);} } class TestRectangle1{ public static void main(String args[]){ Rectangle r1=new Rectangle(); Rectangle r2=new Rectangle(); r1.insert(11,5); r2.insert(3,15); r1.calculateArea(); r2.calculateArea(); } } 
지금 테스트해보세요

산출:

 55 45 

Java에서 객체를 생성하는 다양한 방법은 무엇입니까?

Java에서 객체를 생성하는 방법에는 여러 가지가 있습니다. 그들은:

  • 새로운 키워드별
  • newInstance() 메소드 사용
  • clone() 메소드 사용
  • 역직렬화로
  • 팩토리 방식 등으로

객체를 생성하는 방법은 나중에 배우겠습니다.

Java에서 객체를 생성하는 다양한 방법

익명 객체

어나니머스(Anonymous)는 단순히 이름이 없다는 뜻이다. 참조가 없는 개체를 익명 개체라고 합니다. 객체 생성시에만 사용할 수 있습니다.

개체를 한 번만 사용해야 한다면 익명 개체를 사용하는 것이 좋습니다. 예를 들어:

 new Calculation();//anonymous object 

참조를 통한 호출 방법:

 Calculation c=new Calculation(); c.fact(5); 

익명 개체를 통한 메서드 호출

 new Calculation().fact(5); 

Java에서 익명 개체의 전체 예를 살펴보겠습니다.

 class Calculation{ void fact(int n){ int fact=1; for(int i=1;i<=n;i++){ fact="fact*i;" } system.out.println('factorial is '+fact); public static void main(string args[]){ new calculation().fact(5); calling method with anonymous object < pre> <p>Output:</p> <pre> Factorial is 120 </pre> <a id="objectbyonetype"></a> <h3>Creating multiple objects by one type only</h3> <p>We can create multiple objects by one type only as we do in case of primitives.</p> <p>Initialization of primitive variables:</p> <pre> int a=10, b=20; </pre> <p>Initialization of refernce variables:</p> <pre> Rectangle r1=new Rectangle(), r2=new Rectangle();//creating two objects </pre> <p>Let&apos;s see the example:</p> <pre> //Java Program to illustrate the use of Rectangle class which //has length and width data members class Rectangle{ int length; int width; void insert(int l,int w){ length=l; width=w; } void calculateArea(){System.out.println(length*width);} } class TestRectangle2{ public static void main(String args[]){ Rectangle r1=new Rectangle(),r2=new Rectangle();//creating two objects r1.insert(11,5); r2.insert(3,15); r1.calculateArea(); r2.calculateArea(); } } </pre> <span> Test it Now </span> <p>Output:</p> <pre> 55 45 </pre> <h3>Real World Example: Account</h3> <p>File: TestAccount.java</p> <pre> //Java Program to demonstrate the working of a banking-system //where we deposit and withdraw amount from our account. //Creating an Account class which has deposit() and withdraw() methods class Account{ int acc_no; String name; float amount; //Method to initialize object void insert(int a,String n,float amt){ acc_no=a; name=n; amount=amt; } //deposit method void deposit(float amt){ amount=amount+amt; System.out.println(amt+&apos; deposited&apos;); } //withdraw method void withdraw(float amt){ if(amount <amt){ system.out.println('insufficient balance'); }else{ amount="amount-amt;" system.out.println(amt+' withdrawn'); } method to check the balance of account void checkbalance(){system.out.println('balance is: '+amount);} display values an object display(){system.out.println(acc_no+' '+name+' creating a test class deposit and withdraw testaccount{ public static main(string[] args){ a1="new" account(); a1.insert(832345,'ankit',1000); a1.display(); a1.checkbalance(); a1.deposit(40000); a1.withdraw(15000); }} < pre> <span> Test it Now </span> <p>Output:</p> <pre> 832345 Ankit 1000.0 Balance is: 1000.0 40000.0 deposited Balance is: 41000.0 15000.0 withdrawn Balance is: 26000.0 </pre></amt){></pre></=n;i++){>

한 가지 유형으로만 여러 객체 생성

기본형의 경우와 마찬가지로 한 가지 유형으로만 여러 객체를 생성할 수 있습니다.

기본 변수 초기화:

 int a=10, b=20; 

참조 변수 초기화:

 Rectangle r1=new Rectangle(), r2=new Rectangle();//creating two objects 

예를 살펴보겠습니다:

 //Java Program to illustrate the use of Rectangle class which //has length and width data members class Rectangle{ int length; int width; void insert(int l,int w){ length=l; width=w; } void calculateArea(){System.out.println(length*width);} } class TestRectangle2{ public static void main(String args[]){ Rectangle r1=new Rectangle(),r2=new Rectangle();//creating two objects r1.insert(11,5); r2.insert(3,15); r1.calculateArea(); r2.calculateArea(); } } 
지금 테스트해보세요

산출:

 55 45 

실제 사례: 계정

파일: TestAccount.java

 //Java Program to demonstrate the working of a banking-system //where we deposit and withdraw amount from our account. //Creating an Account class which has deposit() and withdraw() methods class Account{ int acc_no; String name; float amount; //Method to initialize object void insert(int a,String n,float amt){ acc_no=a; name=n; amount=amt; } //deposit method void deposit(float amt){ amount=amount+amt; System.out.println(amt+&apos; deposited&apos;); } //withdraw method void withdraw(float amt){ if(amount <amt){ system.out.println(\'insufficient balance\'); }else{ amount="amount-amt;" system.out.println(amt+\' withdrawn\'); } method to check the balance of account void checkbalance(){system.out.println(\'balance is: \'+amount);} display values an object display(){system.out.println(acc_no+\' \'+name+\' creating a test class deposit and withdraw testaccount{ public static main(string[] args){ a1="new" account(); a1.insert(832345,\'ankit\',1000); a1.display(); a1.checkbalance(); a1.deposit(40000); a1.withdraw(15000); }} < pre> <span> Test it Now </span> <p>Output:</p> <pre> 832345 Ankit 1000.0 Balance is: 1000.0 40000.0 deposited Balance is: 41000.0 15000.0 withdrawn Balance is: 26000.0 </pre></amt){>