sec05 - exam06
전역 상수 : static final : 이름을 대문자로 만듬
* final : 상수 : 1개의 값을 저장하는 곳, 수정 불가 ( <-> 변수)
Earth
EarthApplication
변수의 범위
sec06 - exam01
접근제한자, Getter / Setter
Car
CarApplication
sec06 - exam02 : 패키지(폴더) 이론
chap07 : 클래스 고급
sec01 - exam01 : 상속
CellPhone : 부모클래스 (일반적이고 더 범위가 넓음)
DmbCellPhone : 자식클래스
1. 뒤에 extends CellPhone 작성
2. alt + insert 로 생성자 자동완성하고 model, color 직접 추가
부모쪽에 생성자가 없어서 직접 추가
생성자를 만드는지 안만드는지는 개발자 임의
CellApplication : 실행클래스 : 자식클래스 이름으로 클래스 생성
dmbCellPhone에는 int channel 처럼 channel 속성밖에 없으나 model, color이 출력이 됨
extends CellPhone : CellPhone이라는 클래스의 3요소를 DmbCellPhone이 모두 물려받음
중복된것들을 제거하는게 코딩의 효율화
부모, 자식에 다 작성하는게 아니라 상속하면 중복된것 제거
sec01 - exam02 : 상속 : super 예약어
People : 부모클래스
Student : 자식클래스
1. extends People 작성
2. alt + insert 하면 저절로 3개짜리가 만들어짐
부모쪽에 생성자가 있어서 저절로 생성이 됨
부모쪽에 생성자가 없으면 exam01 처럼
super 사용안하고 this.name = name; this.ssn = ssn; 처럼 직접 추가
★ 부모쪽 생성자 먼저 호출 자식쪽 생성자 호출 ★
StudentApplication : 실행클래스 : 자식클래스 이름으로 클래스 생성
sec01 - exam03 : 상속 : 오버라이딩(overriding) : 재정의 ★
Calculator : 부모클래스
Computer : 자식클래스
ComputerApplicaton : 실행클래스
areaCircle : 부모, 자식 이름이 똑같음
extends Calculator : 부모 클래스의 함수들을 사용할 수 있다
areaCircle 실행했을 때 어떤 함수가 실행이 되느냐
-> 자식 클래스에서 실행하면, 자식 클래스에 있는 함수가 우선적으로 실행됨
부모 돈보다 자기자신 돈을 더 먼저 씀...(?)ㅋㅋㅋㅋㅋㅋㅋㅋㅋ
언제 사용하느냐?
부모에 있는 함수와, 자식에 있는 함수가 동일하면 자식함수가 우선적이다.
Calculator 는 부모함수에 있음
Computer는 부모함수로부터 상속받았기 때문에, 부모함수의 areaCircle과 자식함수의 areaCircle 둘다를 사용할 수 있는데 이럴 경우에는 자식함수가 부모함수보다 더 먼저 쓰인다!!! = 오버라이딩
sec01 - exam04
AirPlane : 부모클래스
SuperAirPlane : 자식클래스
부모에 있는 fly 함수가 시원찮아서
자식에서 if 문으로 fly 함수를 다시 정의함
AirPlaneApplication
여기서 fly()는 일반 비행하다가
밑에서 초음속으로 비행으로 바꿈
sec01 - verify - exam01 : 상속 문제 : 부모클래스를 완성하라
Person : 부모클래스
Student : 자식클래스
1. 자식쪽에 속성이 적혀있어야 사용가능한데 아무것도 없는데 사용중이다 = 부모쪽의 속성이구나
2. age, name, height 에는 ( )가 없다 = 속성이다
3. setWeight에는 ( )가 있다 = 함수다
4. setWeight 는 Setter함수임. set + 속성명 형태!
여기서 set을 제외한 Weight가 속성명이며, 속성명은 관례적으로 소문자로 작성
5. age, height, setWeight 는 숫자인걸보니 정수, name은 문자열
StudentApplication : 실행클래스
sec01 - verify - exam02 : 상속 문제
public 이나 private 붙이는건 같은 패키지에서 쓰냐 안쓰냐의 문제라서 안써도 상관없음!
Point : 부모클래스 : 완성시키기
x, y 속성 만들기
showPoint( ) 함수는 직접 만들기
ColorPoint : 자식클래스
showPoint( ) : ( ) 가 있어서 함수네!라는걸 알기
근데 자식쪽에는 그런 함수가 없기때문에, 부모에서 왔구나를 알기
color는 자식에도 속성이 있으니 부모에는 필요없음
PointApplication : 실행클래스
setX, setY, setColor 은 Setter함수의 형태
showColorPoint( ) 는 함수 형태
부모쪽에 속성이 x,y 가 있구나
x의 값에 3, y의 값에 4 넣음
verify - exam03 : 생성자
Point
public 써도 되고 안써도 된다 : 다른 클래스에서도 사용 가능하다(Point 와 PointApplication은 서로 다른 클래스이다)
생략하면 default : 같은 폴더안에 있는것들은 다 갖다써도 된다는 뜻
PointApplication
Point( ) : 매개변수 없는 기본 생성자
Point( 10, 20 ) : 매개변수 있는 생성자
=> 생성자 2개 만들어야 함
verify - exam04 : 함수 만들기
Computer
ComputerApplication
1. turnOn( ) 등등이 괄호로 되어있으니 함수형태이다 : 함수는 -> 동작, 형태를 나타냄
2. 그리고 int result = computer.turuOn( ) { } 같이 안생겼기 때문에 return 값이 없는 함수다
3. 그 함수를 실행하면 "전원을 켭니다." 가 나오니 함수의 값에는 println에 "전원을 켭니다."를 적으면 됨
verify - exam05 : getter / setter
Pengiun
PengiunApplication
1. set, get 뒤에 나오는게 속성명
2. set 함수의 자료형은 "뽀로로", "남극"을 보아하니 문자열이다.
verify - exam06 : 상속 문제 : Student 자식 클래스를 완성하라
Person : 부모클래스
Student : 자식클래스
1. Person 에서 상속부터 받자 : extends Person
2. getName, getId를 보니 속성이름은 name, id 이다.
부모에 name은 있는데 id가 없으니 자식 클래스에 id라는 속성을 만들면 된다.
3. 자식에 setter / getter 를 만들자
4. "홍길동"만 해결하자 = 생성자
부모쪽에는 기본 생성자와 매개변수 1개짜리 생성자도 있음
자식쪽에는 아무것도 없음. Student student = new Student("홍길동") 에서 student는 자식클래스라서
자식쪽에 생성자 하나 만들기
name 만 생성자 하나 만들기 - id도 생성자 만들래? 하는건 '선택 안 함' 선택
StudentApplication
<상속>
1. 상속 : 부모 클래스의 속성과 함수를 자식 클래스에서 사용할 수 있도록 함
2. 함수(메소드) 재정의 : 부모 함수를 자식 클래스에서 다시 정의하는 것
3. final 클래스 : final 키워드로 선언된 클래스는 부모 클래스를 사용할 수 없음
4. final 함수 : final 키워드로 선언된 함수는 재정의(오버라이딩) 할 수 없음
'JAVA' 카테고리의 다른 글
#32 [JAVA] 인터페이스, 접근제한자, 컬렉션 프레임워크(ArrayList, Vector, LinkedList) (0) | 2024.02.07 |
---|---|
#31 [JAVA] final 클래스/함수, 다형성, 강제(자료)형변환, instanceof 예약어, 추상클래스/추상함수 (0) | 2024.02.07 |
#29 [JAVA] return 있는/없는 void 함수, 매개변수로 배열전달, 함수 오버로딩, Setter/Getter, 전역변수/전역함수, Singleton, final 예약어 (0) | 2024.02.05 |
#28 [JAVA] 열거자료형 Week, 객체지향, 생성자 함수 (0) | 2024.02.02 |
#24 [JAVA] 배열 2,3, 2차원 배열, 향상된 for문, 얇은 복사/깊은 복사, (0) | 2024.01.29 |