생성자와 메모리 할당

추상화를 통해 원을 만들어보겠다. 우리가 정의한 이 '원'은 반지름을 정의할 수 있고, 면적을 알아낼 수 있다.

[EX1]
class Circle { //원의 추상화
	double r; //반지름
	public Cirlcle(double a) {
		r = a;
	}
	public double getArea() { //면적
		return r * r * 3.14;
	}
}

 

main 메서드를 통해서 원에게 실제로 값을 부여(메모리를 할당)해보겠다.

- new를 사용하여 원에게 5.0이라는 값을 전달하면, 메모리가 할당되며 반지름이 5.0인 '원'이 생성된다.

 

Circle 클래스의 생성자를 통해 double a의 값이 double r로 전달된다.

[EX2]
public class CircleArea2 {
	public static void main(String args[]) {
		Circle c = new Circle(5.0);
		System.out.println(c.r); //5.0
		System.out.println(c.getArea()); //78.5
	}
}

그렇기에 c.r을 했을 경우 5.0의 값을 읽어올 수 있다.

 

더보기

객체의 사용

객체 변수와 점(.) 연산자를 사용하여 클래스의 멤버에 접근할 수 있다.

-  객체가 소유하는 데이터(인스턴스 변수)를 읽거나 쓰기 //[EX2] 5line

-  객체를 이용하는 메소드(인스턴스 메소드)를 호출하기 //[EX2] 6line


클래스 정의에 생성자가 없다면 컴파일러가 기본 생성자default constructor를 만든다.

public Cirlce() {}

위의 CirlceArea 클래스에서 4-5line의 생성자 코드가 없었다면 위의 생성자가 기본으로 작성되었을 것이다.


상속과 생성자

 

class A {} 를 만들었을 때 이를 class B의 자식으로 만들 수 있다.

class B extends A {}

이 때 class B는 classA의 데이터도 상속을 받게된다.

상속받은 데이터의 초기화는 부모클래스의 생성자를 사용한다.

이를 하는 것이 super();이다, 부모 클래스의 기본 생성자를 호출한다.

 

생성자 몸체의 첫 줄에 부모 생성자의 명시적 호출이 없다면 super();가 자동으로 들어가게된다.

public Circle() {
    super();
}

'┝ 개발 언어 > ┎ JAVA' 카테고리의 다른 글

[file] 엑셀 파일 업로드 / 다운로드  (0) 2022.06.21
예외처리 : Exception Handler  (0) 2022.05.11
restTemplate  (0) 2022.05.11
전자카드 서버 동시성 제어  (0) 2022.04.10
java proxy  (0) 2022.03.14