04/01 JAVA 생성자, 오버로드(Overload) / 객체의 참조형식
상속관계 복습
생성자와 생성자 오버로드(Overload)
오버로드(Overload)
함수를 생성할 때,
인자가 달라질 경우 다른 함수로 인식이 돼서 위에 사진처럼 생성은 가능
다른 함수에 비해.. total은 과적된 상태 -> Overload 했다
인자가 많으면 많을수록 더 Overload 된 함수다
기존에 있는 함수여야만 Overload 할 수 있다
-> 그렇다면 생성자도 가능할까? 가능하다
생성자 오버로드는
초기화하는 기능은 똑같은데,
아래꺼는 넘겨받은 값으로 초기화한다 -> Overload 생성자
위 사진은 부모클래스에서 현재 오버로드된 함수가 있기 때문에
/ super(괄호안에서 컨트롤 스페이스 했을 때..
둘 중 무엇으로 생성할지 골라라 하는 상황의 사진이다
기본생성자가 없을 경우
컴파일러에서 기본생성자를 만들어주지 않기때문에
메인에서는 인자를 넘겨받는 방식으로 생성을 해야한다
-> new Exam()의 괄호안에 파라미터로 오버로드 생성자의 인자만큼 지정 -> ex) new Exam(10, 20, 30)
파생클래스에서도
이건 생성자를 오버로드한 경우
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
윈도우에서 제공하는 기본 툴들이 다양하다
-> 기존의 frame 함수를 가져다가 내가 원하는 함수(paint)를 오버라이드 해서 사용
다른것들도 이런식으로 가져다 쓰면돼..
아래 사진의 Exam과 NewlecExam의 관계는?
재정의 한다 -> 고쳐쓴다 -> override
이때, 아래 두 줄의 객체생성 말고도 그 아래 두 줄 중 한가지 경우에는 가능한데
Exam < NewlecExam
NewlecExam이 Exam을 상속받았으므로 더 크다
앞의 것은 참조일 뿐 큰 그릇으로 보면 안됨..
-> 이렇게 참조형식이 부모형식으로도 가능하다
부모로 했을 때 달라지는 점은?
직접 해보자
오버로드라는 것은 기능은 같지만 값을 파라미터로 받는다는 것이다
코드가 중복되면 그 중복된 수만큼 (고치더라도)일을 해야하기 때문에 중복된걸 제거해주어야 겠다
인자를 value로 다 바꿔본 경우에
만약에 인자가 없이 exam객체 생성된 것이라면 ??
근데 그래서 참조를 부모로 했을 때 달라지는 점은 뭐지? -> 내일