Java 자바 - 클래스

yuns·2024년 10월 5일
0

Java

목록 보기
14/16

클래스 Class

객체를 만들기 위한 설계도

클래스명 객체명 = new 클래스명();

public class Person {
    // 필드
    String name;
    int age;

    // 생성자
    Person (String name, int age) {
        this.name = name;
        this.age = age;
    }

    Person () {}

    // 메서드
    public void printInfo() {
        System.out.println("name : " + name);
        System.out.println("age : " + age);
    }
}

main 클래스에서 객체 생성하기

public class Ex01 {
    public static void main(String[] args) {
        // 생성자로 클래스 생성하기
        Person p1 = new Person("yuns", 99);

        // 기본 생성자로 각각 값 지정해서 생성하기
        Person p2 = new Person();
        p2.name = "Java";
        p2.age = 123;

        p1.printInfo();
        p2.printInfo();
    }
}

생성자 Constructor

객체가 생성될 때 자동으로 호출된다.
클래스명과 이름이 동일해야하며 리턴 타입은 없음

this 키워드

this : 객체 자신을 의미
this.name = name;에서
this.name(=객체 자신의 name) = name(매개변수의 name);
이다.
this() : 생성자의 호출

클래스 오버로딩 Overloading

하나의 클래스 내에서 같은 이름의 메서드를 매개변수의 개수 또는 타입을 다르게 하여 여러 개 정의 할 수 있는 것

클래스 접근제어자

클래스의 변수나 메서드의 접근에 제한을 두는 키워드

  • private : 해당 클래스 안에서만 접근 가능
  • default : 해당 패키지 안에서만 접근 가능
  • protected : 해당 패키지, 상속받은 클래스 안에서만 접근 가능
  • public : 어디에서든 접근 가능

static 키워드

  • 메모리에 한 번만 할당된다 (static 변수나 메서드는 모든 객체가 공유한다)
  • static 메서드는 객체를 생성하지 않아도 호출 가능하다

클래스 상속 (Inheritance)

기존 클래스에 기능을 추가하거나 재정의해서 새로운 클래스를 정의하는 것

class 자식클래스명 extands 부모클래스명 {}

super 키워드

super : 부모 클래스와 자식 클래스의 멤버 이름이 같을 때 구분
super() : 부모 클래스의 생성자 호출

클래스 오버라이딩 (Overriding)

부모 클래스의 메서드를 자식 클래스에서 재정의하는것

class Student extends Person {
    String name;
    int score;
    Student (String name, int age, int score) {
//        super(name, age); 부모 클래스인 Person클래스의 생성자를 호출하는것
        this.name = name; // Student 클래스의 name
        super.name = name; // 상속 받은 name
        this.age = age; // 상속 받은 age
        this.score = score; // Student 클래스의 score
    }

    // 오버라이딩
    public void printInfo() {
//        System.out.println("name = " + name);
//        System.out.println("age = " + age);
        super.printInfo(); // 부모에서 이미 정의된 메서드 사용하기 
        System.out.println("score = " + score);
    }
}

내부 클래스

클래스 안에 선언한 클래스 (중첩 클래스라고도 한다)
외부 클래스에서는 내부 클래스에 접근 불가하지만, 내부 클래스에서는 외부 클래스에 접근 가능하다

  • 인스턴스 클래스
  • 정적 클래스
  • 지역 클래스
  • 익명 클래스

0개의 댓글