Class

똘이주인·2021년 5월 18일
0

Class

  1. 사물 하나 하나를 기능별로 묶어서 사용하는 것.
  2. 각 클래스 안에서 역할에 따라 각 클래스의 기능을 서술해 나감.
  3. 다른 클래스에서 다른 클래스를 선언 하여 사용할 수 있다.
  4. 클래스는 연관되어 있는 변수와 메소드의 집합

클래스의 구성 멤버

구성 멤버에는 필드(field), 생성자(constructor), 메소드(method)가 있으며, 이 구성요소는 생략되거나 복수 개가 작성 될 수 있다.

  1. 필드(field) : 필드는 객체의 고유 데이터, 부품 객체, 상태 정보를 저장하는 곳.
  2. 생성자(constructor) : 생성자는 new 연산자로 호출되는 특별한 중괄호 블록
  3. 메소드(method) : 메소드는 객체의 동작에 해당하는 중괄호 블록
// 자바에서는 어떤 프로그래밍이든 클래스 안에 속해있다.
// public static void main(String[] args) 기능도 class안에 속해 있다

public class Animal { // Animal = 클래스이름
	public static void main(String[] args){
    //프로그램 시작 시점 
    }
}
/*
위 Animal 클래스는 가장 간단한 형태의 클래스이다.
클래스의 선언만 있고 내용이 없는 껍데기뿐인 클래스이다.
하지만 이 껍데기뿐인 클래스도 아주 중요한 기능을 가지고 있다.
그 기능은 바로 객체(object)를 만드는 기능
*/

Animal cat = new Animal(); // new는 객체를 생성할 때 사용하는 키워드
// Animal 클래스의 인스턴스(instance)인 cat, 즉 Animal의 객체가 만들어진것.

Casting(형변환)

클래스 형변환

모타입으로 자식객체를 참조하게 되면 부모가 가지고 있는 메소드만 사용할 수 있다. 자식객체가 가지고 있는 메소드나 속성을 사용하고 싶다면 형변환 해야 함

public class Car{
        public void run(){
            System.out.println("Car의 run메소드");
        }
    }

    public class Bus extends Car{
        public void ppangppang(){
            System.out.println("빵빵.");
        }   
    }
// 부모타입으로 자식객체를 참조할 수 있다.
		// 부모타입으로 자식객체를 참조하게 되면 부모가 가지고 있는 메소드만 사용 가능
public class BusExam{
        public static void main(String args[]){
            Car car = new Bus();
            car.run();
            //car.ppangppang(); // 컴파일 오류 발생
						// ppangppang()메소드를 호출하고 싶다면 Bus타입의 참조변수로 참조해야 함.

            Bus bus = (Bus)car;  //부모타입을 자식타입으로 형변환 
            bus.run();
            bus.ppangppang();
        }
    }

// 객체들 끼리도 형변환이 가능하다. 단 상속관계에 있었을 때만 가능하다.
// 부모타입으로 자식타입의 객체를 참조할 때는 묵시적으로 형변환이 일어난다.
// 부모타입의 객체를 자식타입으로 참조하게 할때는 명시적으로 형변환 해주어 한다.
// 단 이렇게 형변환 할때에는 부모가 참조하는 인스턴스가 형변환 하려는 자식타입일 때만 가능하다.

객체 변수

Animal 클래스에 name 이라는 String 변수를 추가했다. 이렇게 클래스에 선언된 변수를 객체 변수 라고 부른다. 또는 인스턴스 변수, 멤버 변수, 속성이라고도 말한다.

public class Animal {
    String name;
}
/*
Animal cat = new Animal() 처럼 cat 이라는 객체를 생성했다면
이 cat 객체의 객체 변수 name에는 다음과 같이 접근
cat.name // 객체: cat, 객체변수: name
*/

// 출력
public class Animal {
    String name;

    public static void main(String[] args) {
        Animal cat = new Animal();
        System.out.println(cat.name); // 샐행결과: null 
																			// 이유 : name을 선언했지만 아무런 값도 대입하지않음.
    }
}

0개의 댓글