Static과 Object 클래스

서문🌙·2023년 3월 8일
0
post-thumbnail

Static(정적)

Java에서 static 키워드는 내부 클래스, 메소드 및 변수에 적용될 수 있습니다.
정적 메서드 및 변수는 .클래스의 모든 인스턴스간에 공유됩니다.
클래스의 새 인스턴스를 만들지 않고도 호출하고 액세스할 수 있습니다.

public class Car
{
    static String color;
    
    static void beep()
    {
        System.out.println("빵빵!");
    }
    void brake()
    {
        System.out.println("멈춰!");
    }
    
    //Car.color = "RED";
    //Car.beep();			정적
    
}

Car myCar = new Car();
myCar.beep();			//정적이 아님


public class Car
{
	static class Engine		//일반 클래스는 정적이 불가능, 내부 클래스는 가능하다
    {
    	...
    }
}

Car.Engine carEngine = new Car,Engine();

그래서, 정적 비 정적이 무슨 뜻인데?

(변수)
비 정적 변수 = 일반 변수(만들고, 대입하고 등 자유로움)
정적 변수 = 클래스의 모든 인스턴스간에 공유된다(고유하다) 즉, 모든 개체에서 공유하는 복사본이 단 하나만 존재한다.


(메서드)
정적 메서드는 클래스의 모든 인스턴스에서 공유하므로 비 정적 메서드와는 다르게 정적 메서드는 호출하기 위해 특정 개체를 만들 필요가 없다.

요약

  • 정적 멤버는 어디에서나 액세스 할 수 있다.
  • 비정적 멤버는 메서드와 같이 정적 컨텍스트에서 액세스할 수 없습니다.
  • (에러사항) 정적 컨테스트에서 비정적 변수를 참조할 수 없습니다.

Object 클래스

Object 클래스는 java.lang 패키지에 있다.
Java의 모든 클래스는 Object 클래스에서 직접 또는 간접적으로 파생된다.
클래스가 다른 클래스를 확장하지 않으면 Object의 직계 자식 클래스이고,
다른 클래스를 확장하면 간접적으로 파생된다.

  • 즉, Object 클래스 메서드는 모든 Java 클래스에서 사용할 수 있다.

Object 클래스의 메서드

  • toString()
  • hashCode()
  • equals(Object obj)
  • clone();
  • getClass()
  • wait()
    ...
profile
예외(exception)는 있다

0개의 댓글