어? 이게 되네
2022.04.06. 수요일 이공계 전문기술 연수사업 8일차 본문
오늘 배운 것
final
ㄴ클래스의 멤버 변수명 앞에
ㄴㄴ변수이기는하지만 고정된 상수처럼 사용하고자 할 때 사용함.
ex) int a=10;
a=5;
final int b=10;
b=10; //오류발생
final은 어차피 못 바꾸는 것이라서 객체마다 따로 메모리를 잡을 필요가 없음.
그래서 final이면 static으로 만들어서 모든 객체가 같이 사용함.
final상수는 다른 상수와 구별하기 위해서 모두 대문자로 사용함.
ㄴ클래스의 멤버메소드명 앞에
ㄴㄴ자식클래스에서 오버라이딩 금지시키는 것
ㄴ클래스의 클래스이름 앞에
ㄴㄴ상속을 금지시킴.
-----------------------------------------------------------------------------------
this와 this()에 대하여 설명하시오
=>this()는 생성자 안에서 또 다른 생성자를 호출할 때 사용(맨 앞 줄에 와야 함.)
this는 선언한 멤버가 생성자나 메소드의 매개변수의 이름과 겹쳐서 구분할 때 사용
-----------------------------------------------------------------------------------
super와 super()
ㄴsuper는 상속관계에 있을 때, 부모클래스에 있는 멤버와 똑같은 이름의 멤버를 자식클래스에서 만들면
부모에 있는 동일한 이름의 멤버는 가려지게 됨.
이 때 부모의 동일한 이름의 멤버에 접근하기 위하여 super를 사용함.
예를 들어, 부모 클래스에도 hello()메소드가 있고
자식 클래스에도 hello()메소드가 있다면
hello()를 호출하면 자식클래스의 hello()가 동작함.
부모에 있는 hello()를 동작시키려면 super.hello()라고 함.
ㄴsuper()는 상속관계에 있을 때, 부모의 생성자를 요구하고자 할 때 사용함.
이 때 반드시 첫 번 째 문장에 와야함.
자식의 생성자에서 맨 첫 번 째 문장에 부모의 기본 생성자를 요구하는 super()가 생략되어 있음.
쓰지 않아도 자동으로 요구됨.
만약, 기본 생성자가 아니고 매개변수를 갖는 생성자를 동작시키고자 한다면
반드시 super(값1,값2,...)로 명시해야 함.
------------------------------------------------------------------------------------
추상메소드와 추상클래스
ㄴ미래에 만들어질 자식 클래스들이 공통으로 가져야 할 속성들과 동작들을 모아서 미리 부모클래스를 만들 수 있음.
이 때, 어떠한 동작이 반드시 자식 클래스에 있어야 하지만, 부모 클래스를 만드는 시점에서 그 내용을 구체화할 수 없음
이러한 메소드는 메소드의 몸체(body){}를 구체화하지 않고, 메소드 선언만 적음.
이러한 메소드를 "추상메소드"라고 함. 이 때 메소드 이름 앞에 abstract라는 키워드를 붙여줌
이렇게 어떤 클래스가 추상메소드를 하나라도 포함하고 있으면 그 클래스를 추상클래스라고 함.
이 클래스 이름 앞에도 abstract 키워드를 붙여줌
------------------------------------------------------------------------------------
has a, is a
ㄴ자바로 만들어진 소프트웨어 속을 들여다보면 수 많은 클래스들로 구성되어 있음.
그 클래스들은 has a 관계이거나 is a 관계에 있음.
예를 들어 A라는 클래스가 있고 B클래스가 멤버 변수로 A클래스의 객체를 갖는다고 하면, B has a A관계임.
그리고, A라는 클래스를 확장한 C클래스가 있다면 C is a A의 관계임. A is a C는 또 아님
ex) 사자는 동물입니다는 맞음 하지만 동물은 사자입니다는 아님.
------------------------------------------------------------------------------------
상속관계에 있는 클래스를 is a 관계라고 함.
is a 관계에 있는 부모 클래스의 참조 변수는 자식 클래스의 객체를 참조할 수 있음.
만약 부모클래스의 참조변수로 자식클래스의 객체를 생성한 후, 오버라이딩한 메소드를 호출하면
자식클래스의 메소드가 동작함.
부모의 참조변수로 자식클래스의 객체를 생성할 일이 많음.
이럴 때 오버라이딩한 메소드는 동작이 되지만
자식클래스에서 추가된 메소드는 바로 추가될 수 없음.
자식클래스로 형 변환한 후, 호출 해야함!!
-------------------------------------------------------------------------------------
오늘 헷갈린 것
- exam06 super(name,num)오류 왜 일어나는 걸까?
- 객체를 생성하지 않고도 사용할 수 있는 메소드- 정적메소드. 원래 메소드는 객체를 생성해야만 사용할 수 있음!
- 객체 배열 선언 너무 어렵다....
- 자료형 캐스팅 - 배열을 클래스자료형으로 캐스팅하는 법,ArrayList를 클래스자료형으로 캐스팅하는 법
- 추상클래스를 객체로 만들 수 없다는 것!(그니까 추상클래스자료형 =new 추상클래스자료형) 이렇게 만들 수 없다.
- 메인 메소드 안에 메소드 또 만들 수 없다!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
오늘 한 생각
어제 공부하느라 늦게 잤더니 집중이 잘 안되는 느낌... 졸리다...
공부하면 잠이 잘 올 줄 알았는데 왜 잠이 잘 안오는 거지..? ㅠㅠ
일상을 루틴화를 하는 것이 정말 중요한 것 같다! 평일은 매일 복습+블로그정리에 2회 운동
주말은 2주마다 한 번 등산..에 공부는 어떻게 해야할 지... 고민된다 ㅠㅠ
'TIL' 카테고리의 다른 글
2022.04.08. 금요일 이공계 전문기술 연수사업 10일차 (0) | 2022.04.08 |
---|---|
2022.04.07. 목요일 이공계 전문기술 연수사업 9일차 (0) | 2022.04.07 |
2022.04.05. 화요일 이공계 전문기술 연수사업 7일차 (0) | 2022.04.05 |
2022.04.04. 월요일 이공계 전문기술 연수사업 6일차 (0) | 2022.04.04 |
2022.03.30. 수요일 이공계 전문기술 연수사업 3일차 (0) | 2022.03.31 |