풀스택 자바 - 20240801

김진아·2024년 8월 1일

워딩


인스턴스화

  • 클래스를 객체 즉 실제로 사용할 수 있도록 생성하는 것을 의미



클래스 - 스태틱, static


  • 클래스의 모든 인스턴스에서 공유되는 변수

    Car car1 = new Car();
    Car car2 = new Car();
    car1.run();
    car2.run();
    System.out.printf("car1.speed: %d\ncar2.speed: %d\n car1.wheels: %d\ncar2.wheels: %d", car1.speed, car2.speed, car1.wheels, car2.wheels)
    // 출력
    // car1.speed: 101
    // car2.speed: 101
    // car1.wheels: 3
    // car2.wheels: 3
    
    class Car {
        int speed = 100;
        static int wheels = 1;
    
        void plus_wheels() {
            speed++;
            wheels++;
        }
    }

    스태틱 변수는 따로 삽입된 객체여도 항상 공유되는 변수이기 때문에, speed는 각각 1번씩만 1씩 더해졌지만 스태틱 변수인 wheels는 두 번 더해진 값이 나온다. 즉, car1에서 wheels를 변경하면 car2에서도 wheels가 변경된다는 뜻이다.


  • 위의 이유로 스태틱 변수는 선언이 따로 된(인스턴스) 객체에서도 항상 공유되기 때문에 클래스에 직접 접근이 가능하다.

    Car car1 = new Car();
    car1.speed = 10;	// 인스턴스 객체를 통한 접근
    Car.wheels = 4;		// 클래스에 직접 접근

  • 스태틱 메소드는 스태틱 필드와 파라미터만 접근가능하다.

  • 일반 메소드는 일반 필드와 스태틱 필드 모두 접근가능하다.

class Car {
	int speed;
    static String name;
    
    void run() {
    	speed = 100;
        name = "venz";
    }
    static void run() {
        speed = 120;    //오류
        name = "venz";  
    }




클래스 - 상속


  • 타 클래스의 필드와 메소드 모두 상속받는다.

    class 오리() {
        void 날다() {
            System.out.println("날 수 있어");
        }
    }
    class 고무오리 extends 오리 {}
    
    -------main
    고무오리 오리2 = new 고무오리();
    오리2.날다();
    // 출력: "날 수 있어"

  • 오버라이드: 상속자 클래스의 메소드를 피상속자 클래스가 재정의하는 것

  • 만약 상속하는 클래스에 있는 메소드를 상속받는 클래스가 재정의를 했다면 상속받는 클래스에 있는 메소드를 사용한다.

    class 오리() {
        void 날다() {
            System.out.println("날 수 있어");
        }
    }
    class 고무오리 extends 오리 {
        void 날다() {
            System.out.println("저는 날 수 없어요..");
        }
    }
    
    -------main
    고무오리 오리2 = new 고무오리();
    오리2.날다();
    // 출력: "저는 날 수 없어요.."
profile
https://develop-chick.tistory.com/ 첫번째 블로그

0개의 댓글