반응형

 

안녀아ㅓ어아엉!

징글징글하게 바쁘네 그령

 

오늘은 신나고 재미나게 

자바를 해볼건데

 

생성자라는걸 좀 알아보려고해!

그리고 비슷하게 생겨먹은 메소드와의 차이를 구분해볼게!

 

보다보면 " 이거...?" 헷갈리는데..? 

 

할건데 이번에 확실히 알아보자구

 

그럼 알아보러 가보자 

레츠기린


우리가 기존에 알고있는 메소드는?

기능을 구성하는 친구야!

 

package project;

public class Main {
    public static void main(String[] args) {
		System.out.println("뿌빠빠빠뿌빠빠");
    }
}

 이 친구는 기본 메소드인 친구이고 그치 ??

파라미터도 있고~ 리턴 타입도 정의해주고~

이런 친구였어

 

근데 오늘 알아볼 생성자는 어떤친구인지 보여줄게

package project;

class SubMain {
	public SubMain(int age)}
    
	}
}

 

????

리턴타입이 없어! 그리고..?

클래스랑 이름이 아주 똑같아

이게 머선일일까...?

 

일단 무지 비슷한 친구인데

 

이 특별한 코드블록은 주로

객체의 초기화를 위해서 사용을 하는 친구야!

 

우리가 주로 다른 클래스의 친구를 불러다가 쓸때

 

Exam ex = new Exam();

 

 이런식으로 new 표현식을 활용해서 인스턴스화 시켜서 사용을하는데

만약 이 인스턴스 안에 int a라는 값이 0이였던게

부를때마다 1씩증가하거나 

결과물이 다르게 나온다?

그럼 머리를 싸메고 뒹굴거리기 시작하게되는거야

 

ex.a = 0은 특별한 상황 아니고서는 0이 지속적으로 제공이 될 수 있도록

작업을 해주는 친구인거지

 

이 친구의 특징을 살짝 보면

접근제한자를  public, protected, private 만 사용가능하고

나중에 써보게 될 abstract, final, navite etc...... 등을 사용 할 수가 없어!

심지어 반환값인

"void? 낄끼빠빠 해야지 어딜들어와! "

라며 받아주지 않는 그런 매정한 친구야

또한 클래스이름과 같아야하는게 규칙이지

하지만 메소드는 아니지만 파라미터의 적용방법은 동일한게 이녀석의 특징이야

 

여기까지가 간단한 설명이고

 

 

* 주의 *

 

머리가 아플 수 있는 설명

일단 위에 말한것과 더불어서 throws 리스트를 통해서 예외 리스트 적용이 가능해

메소드는 부를때 마다 오지만

생성자는 클래스 생성시, 호출이 룰이야!

따로 호출이 안되는 녀석인거지

 

이녀석의 특별한점은 this사용이야.

이건 생성자 호출할때 쓰는 녀석인데 뭐 말해뭐해,

단 한번 호출인거지

골든벨에서 친구들아 미안해 쓰기전에 쓰는

그런 찬스같은 존재랄까나

 

이녀석은 부모클래스 호출을 위해서는

super라는 친구를 친구를 쓰는데

 

" 엄마!!! 잠깐만!!!!" 이거랑 똑같은거야

엄마!! 하고 몇번 부른다..

그럼 등짝스매싱각이 슬슬 잡히거든?

 

그러니깐 이 친구도 한번만!

 

"부모 클래스가 호출이 된다? 그럼 상속도되는거니?"

 

아니 상속은 안되구, 호출만 되는거지 상속의 개념도 없을뿐더러 

그에 따른 오버라이딩도 불가하다! 이말이야!


정리

 

생성자는

클래스 이름과 같아야함

 

접근제한자는 public, protected, private

수식어는 노노

멤버가 아니라서 상속 노노

그러기에 오버라이딩 노노

 

this() = 생성자 호출은 생성자에서만

super() = "엄마!!" 부모클래스 소환술

(컴파일러시 자동 생성)

 

호출은 1번씩만

 

객체 초기화

 

끝!

 

그럼 오늘은 20000!

 

 

 

반응형