본문 바로가기
JAVA

JAVA(클래스, 객체, 생성자)

by 글로리. 2020. 6. 4.

객체(=Object)

  • 사전적 의미 : 물건이나 어떠한 대상
  • 프로그래밍에서의 객체 : 프로그램에서 표현하고자 하는 기능을 묶기위한 단위

객체를 구성하는 단위

  • 객체를 이루는 것은 데이터기능이다.
  • 데이터는변수로 표현됨.
  • 객체안에 표한된 변수는 멤버변수 혹은 프로퍼티라 함.
  • 기능은 메서드(=함수)로 표현함

클래스와 객체

객체를 생성하기 위해서는 객체의 설계도가 필요함

클래스(=Class)

객체의 설계도 역할을 하는 프로그램 소스
객체의 뼈대 라고 할 수 있다

클래스의 기본작성방법

class 클래스이름 {
    멤버변수;

    void 메서드이름( ) {
        실행내용
    }
}
  • 'class' 라는 예약어와 클래스이름 명시 후 {~~}블록 구성.
  • 멤버변수는 여러개 가능, 값을 선언과 동시에 할당가능.
  • 메서드도 여러개 가능.

객체 생성방법

// 객체의 생성방법
클래스이름 객체이름;
// 예시
Glory gr;

// 객체의 할당
객체이름 = new 클래스이름();
// 예시
gr = new Glory();

// 선언과 할당의 통합
클래스이름 객체이름 = new 클래스이름();
// 예시
Glory gr = new Glory();

객체 사용

객체 안에 포함된 변수나 메서드는 점(.)으로 연결

// 객체안에 포함된 변수의 값을 다른변수에 복사
값 = 객체이름.멤버변수;

// 객체안에 포함된 변수의 값에 다른 값 대입  
객체이름.멤버변수 = 값;  

// 객체안에 포함된 메서드를 호출  
객체이름.메서드이름();  

// 객체안에 포함된 메서드에 파라미터 전달  
객체이름.메서드이름(값1, 값2, ....);  

멤버변수만 포함하고 있는 클래스의 작성 예

학생정보를 포함하는 클래스의 작성

class Student {
    /* 멤버변수의 선언, 할당 */
    // 문장을 표현 할 수 있는 변수형
    String name = "자바학생";
    int age = 19;
}

public class Main01 {  
    public static void main(String\[\] args) {  
        // 객체의 선언과 할당의 분리  
        Student std;  
        std = new Student();

        // 객체의 생성 (일괄지정)
        // Student std = new Student();

        System.out.println("이름: " + std.name);
        System.out.println("나이: " + std.age);
    }

}

// 실행결과  
이름: 자바학생  
나이: 19

클래스를 정의하면서 멤버변수에 값을 직접 대입x.

class Charactor {
    // 일반적으로는 멤버변수는 선언만 함.
    String name;
    int age;
}

public class Main02 {
    public static void main(String[] args) {
        // 하나의 클래스가 정의되면, 그 클래스의 구조를 기반으로 하는
        // 여러개의 정보덩어리(=객체)를 생성할 수 있다.
        Charactor d = new Charactor();
        d.name = "둘리";
        d.age = 19;

        Charactor h = new Charactor();
        h.name = "희동";
        h.age = 3;

        System.out.println("이름: " + d.name + ", 나이: " + d.age);
        System.out.println("이름: " + h.name + ", 나이: " + h.age);
    }
}

// 실행결과
이름: 둘리, 나이: 19
이름: 희동, 나이: 3

메서드를 포함한 클래스

class HelloWorld {
    String message;

    void sayHello() { System.out.println(message);}
    void setEng() message = "Hello Java";}
    void setKor() message = "안녕하세요. 자바";}
}

public class Main03 {
    public static void main(String[] args) {
        HelloWorld hello = new HelloWorld();

        // 메서드의 호출
        hello.setEng();
        hello.sayHeIIo() ;
        hello.setKor() ;
        hello.sayHeIIo() ;
    }
}

// 실행결과
Hello Java
안녕하세요. 자바





this : 자기 자신을 의미하는 키워드

  • 클래스 안에서 this를 사용하여 "자기자신"을 표현
class Member {
    String name;
    int age;

    String getName() {return this.name;}

    void setName(String name) {this.name = name;}

    int getAge() {return this.age;}

    void setAge(int age) {this.age = age;}

    void say() {
        System.out.println(this.getName());
        System.out.println(this.getAge());
    }
}

public class Main05 {
    public static void main(String[] args) {
        Member member = new Member();
        member.setName("자바학생");
        member.setAge(20);
        member.say();
        }
}





생성자

  • new 키워드를 사용하여 객체가 생성될 때 자동으로 실행되는 특수한 형태의 메서드
  • 'return' 명시하지 않으며 메서드의 이름은 클래스와 동일
  • 자동으로 실행된다는 특성때문에, 객체가 생성되면서 해당 객체의 특성을 초기화 하기위해 사용.

생성자 활용

파라미터를 갖지않는 생성자

class Book {
    String subject;
    String content;

    // 생성자 : 객체가 생성될 때 자동으로 실행되는 특수한 메서드
    Book() {
        System.out.println("-------- 생성자 실행됨 -----------");
        this.subject = "JAVA 입문";
        this.content = "JAVA 어려움";
    }

    void read() {
        System.out.println("------ read() 실행됨 --------");
        System.out.println(this.subject);
        System.out.println(this.content);
    }
}

public class Main01 {
    public static void main(String[] args) {
        Book book = new Book();
        book.read();
    }
}

// 실행결과
-------- 생성자 실행됨 -----------
------ read() 실행됨 --------
JAVA 입문
JAVA 어려움



파라미터를 갖는 생성자

class Article {
    int seq; // 글번호
    String subject; // 글 제목
    String writer; // 작성자

    public Article(int seq, String subject, String writer) {
        this.seq = seq;
        this.subject = subject;
        this.writer = writer;
    }

    public void print() {
        System.out.println(this.seq);
        System.out.println(this.subject);
        System.out.println(this.writer);
    }
}

public class Main02 {
    public static void main(String[] args) {
        // 객체생성
        Article article1 = new Article(1, "첫번째 글", "김아무개");
        article1.print();

        system.out.println("----------------");

        Article article2 = new Article(2, "두번째 글", "이아무개");
        article2.print();
    }
}

// 실행결과
1
첫번째 글
김아무개
--------------
2
두번째 글
이아무개

'JAVA' 카테고리의 다른 글

JAVA(상속성, 다형성)  (0) 2020.06.09
JAVA(자바빈즈(Java Beans), 은닉성, 상속성)  (0) 2020.06.09
JAVA(재귀함수)  (0) 2020.06.04
JAVA(값 복사 / 참조 복사)  (0) 2020.06.03
JAVA(메서드)  (0) 2020.06.03

댓글