2020.10.30 일지

0후·2020년 10월 30일
0

비트캠프

목록 보기
10/112

오늘의 요약

1. (메소드)오버라이딩( Overriding ) 
   (1) '상속관계'에서 부모의 메소드의 일(내용)을 자식에서 '바꾸는 것'
   -> 오버라이딩이란, 덮어쓰는 것을 얘기한다. 
   (2) 조건
	   1) 메소드 이름이 같아야 함
	   2) 반환타입이 일치해야 함
	   3) 생성자는 불가 
	   -> 생성자를 호출하려면 클래스명과 이름이 똑같아야 하는데, 오버라이딩을 하려면 부모와 자식간의 이름이 똑같아야 한다. 고로 논리적으로 맞지 않는 말이다.
	   4) 파라미터의 타입, 순서, 갯수가 모두 일치해야 함 
	   -> 파라미터 변수의 변수명은 중요하지 않다. 변수명이 달라도 오버라이딩 할 수 있다.
	   5) 자식메소드의 접근제한자가 부모메소드의 접근제한자보다 같거나 넓어야 한다. 
	   -> 접근제한자 : 클래스의 구조에서 생성자, 메소드, 멤버변수 모두 접근제한자(default)가 존재하는 것이다. 추후 공부할 것이지만, 접근범위가 넓은 순서는 다음과 같다. public > protected > default > private 순임
	  
2. 오버로딩 ( Overloading )
	(1) 정의: (호출 시 그 형태에 매핑되서 호출되도록) 파라미터의 종류나 순서나 갯수가 다른 '같은 이름의 메소드나 생성자를 여러개 정의하는 것'
		-> 김치찌개를 만들 여러가지 재료(참치, 삼겹살, 스팸, 꽁치 등)를 미리 준비해둬서 어떤 김치찌개를 만들지 그때 그때 상황에 따라 정하는 행위
		-> 메소드와 생성자를 똑같은 이름으로 조금씩 다른 기능, 변수를 받아 만든 뒤 나중에 쓸 수 있게 준비해두는 것
	(2) 종류
		1) 생성자
		2) 메소드
	(3) 특징
		1) 반환타입과 관계없음
		2) 접근제한자와 관계없음
		3) 상속관계라면 다른 클래스에서도 오버로딩 가능
		4) 형변환이 가능한 파라미터라도 오버로딩으로 인정

3. thissuper
	(1) this
		1) 정의: 자신의 '객체' 또는 '생성자'를 의미하는 대명사
		-> 정의를 내려보는 연습을 계속 해볼 것,
		-> 다른 사람의 의견을 반영한다면 근본적으로 이해하기에는 바람직하지 못하다.
			
		2) 사용예 
			<1> 지역변수와 이름이 같은 멤버변수를 해당 지역에서 접근할 때
			<2> 자신의 생성자를 호출할 때 
			<3> 자신의 객체를 다른 클래스에게 넘길 때

	(2) super
		1) 정의: 부모의 '객체' 또는 '생성자'를 의미하는 대명사 

		2) 사용예
			<1> 부모의 생성자를 호출할 때
			<2> 이름이 같은 부모의 멤버를 자식에서 접근할 때
			-> 프로그램에서는 주어가 항상 있어야 하는데, '나=this'는 생략할 수 있다.
			<3> 오버라이딩 되기 전의 부모메소드를 자식에서 호출할 때
profile
휘발방지

0개의 댓글