[Java] 객체지향과 클래스

Ogu·2023년 5월 15일
0

Java

목록 보기
5/6

🎈클래스

Animal 클래스

class Animal {
}

public class Sample {
    public static void main(String[] args) {
        Animal cat = new Animal();
    }
}

new 는 객체를 생성할 때 사용하는 키워드입니다. 이렇게 하면 Animal 클래스의 인스턴스(instance)인 cat, 즉 Animal의 객체가 만들어집니다.

클래스와 객체

  • 과자틀 → 클래스 (Class)
  • 과자틀에 의해서 만들어진 과자들 → 객체 (Object)
Animal cat = new Animal();
Animal dog = new Animal();
Animal horse = new Animal();

객체 변수

class Animal {
    String name;
}

public class Sample {
    public static void main(String[] args) {
        Animal cat = new Animal();
    }
}
  • 클래스에 선언된 변수를 객체 변수 라고 합니다. 객체 변수는 인스턴스 변수, 멤버 변수, 속성이라고도 합니다.
  • 즉, 클래스에 의해 생성되는 것은 객체, 그리고 그 클래스에 선언된 변수는 객체 변수입니다.
  • 객체 변수는 고유의 값이며, 다른 객체와 공유하지 않습니다.

객체의 변수에 접근할 떄는 다음과 같이 .을 사용합니다
객체.객체변수

ex)

Animal cat = new Animal()
cat.name   // 객체: cat, 객체변수: name

메서드

메서드는 클래스 내에 구현된 함수를 의미하는데 보통 함수라고 말하지 않고 메서드라고 합니다.

class Animal {
    String name;

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

public class Sample {
    public static void main(String[] args) {
        Animal cat = new Animal();
        cat.setName("boby");  // 메서드 호출
        System.out.println(cat.name);
    }
}

setName

  • 입력: String name
  • 출력: void (리턴값 없음)

🎈 생성자

메서드명이 클래스명과 동일하고 리턴 자료형을 정의하지 않는 메서드를 생성자(Constructor)라고 합니다.

생성자의 규칙

  • 클래스명과 메서드명이 동일하다.
  • 리턴타입을 정의하지 않는다. (void도 사용하지 않는다.)

Default 생성자

생성자의 입력 항목이 없고 생성자 내부에 아무 내용이 없는 생성자를 디폴트 생성자라고 합니다.

class Dog extends Animal {
    Dog() {
    }

    void sleep() {
        System.out.println(this.name + " zzz");
    }
}

생성자 오버로딩

입력 항목이 다른 생성자를 여러 개 만들 수 있는데 이런 것을 생성자 오버로딩(Overloading)이라고 한다.

class HouseDog extends Dog {
    HouseDog(String name) {
        this.setName(name);
    }

    HouseDog(int type) {
        if (type == 1) {
            this.setName("yorkshire");
        } else if (type == 2) {
            this.setName("bulldog");
        }
    }
}

🎈 상속

클래스 상속을 위해서는 extends 라는 키워드를 사용합니다.
보통 부모 클래스를 상속받은 자식 클래스는 부모 클래스의 기능에 더하여 좀 더 많은 기능을 갖도록 작성합니다.
참고로 자바는 다중 상속을 지원하지 않습니다.

class Animal {
    String name;

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

class Dog extends Animal {
    void sleep() {
        System.out.println(this.name+" zzz");
    }
}
profile
私はゲームと日本が好きなBackend Developer志望生のOguです🐤🐤

0개의 댓글