JAVA

DAY 10 ( 생성자, VO, 상속, 오버라이딩, 객체 casting, ArrayList )

도키마 2024. 5. 31. 16:24

 

 

 

 

 

오늘의 노래 추천 🐝

 

 
Everyday
아티스트
MAVE: (메이브)
앨범
MAVE: 1st EP 'What's My Name'
발매일
1970.01.01

 

메이브님들 노래 다 들어요 솔직히 좋다

pandora만 반복재생하던 때가 있었는데 아는 언니한테 말하니까 실화냐는 표정으로 보더라고요(대체왜)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

DAY 10

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

** 생성자  **

 

constructor method

 

 

 

 

 

 

 

 

 

 

 

 

생성자 목적

 

1. 객체가 생성될 때 필드의 초기값 지정

2. 객체가 생성과 동시에 초기작업 실행 가능

 

 

생성자의 특징

 

1. 생성자 이름은 항상 class 와 동일함

2. 생성자도 method 임 (리턴타입이 없음)

 

 

 

 

접근제한자

ㅡ> 캡슐화

 

 

 

 

 

생성자

 

 

 

 

 

VO (Value Object)

 

객체를 값으로써 사용하는데 목적인 객체 ( 데이터 자체를 표현 )

 

 

 

 

VO의 특징

 

로직 메서드 부재 (field만 존재)

private를 사용해 데이터에 대한 불변성 보장

값의 동등성 보장

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

** 상속 **

Inheritance 

 

 

 

 

 

 

 

 

 

 

 

기존 class의 변수(데이터)와 메서드(로직,코드)를 물렵다아 새로운 클래스를 구성하는 것

 

super class ㅡ>(상속) sub class

+재사용성

+추가기능

 

 

public class sub class extends super class ( ) {

}

 

extends 는 확장한다는 의미

class 를 선언하는 구간에 작

 

 

 

 

 

 

 

ㅡ 상속의 특징 ㅡ

 

 

다중상속 X

상속 횟수 제한 X

* 모든 class는 java..lang.Object 를 상속받음 *

 

java.lang.Object

 

 

 

 

 

 

ㅡ 상속의 필요성 ㅡ

 

 

상속의 필요성

 

1. 기존 class의 변수와 코드를 재사용함으로써 중복이 감소하고 간결

2. 선작성된 검증된 프로그램을 재사용해 신뢰성있는 프로그램 작성

3. 클래스간 계층적 분류 및 관리로 유지보수가 용이

 

 

 

 

 

 

 

 

[ 상속 실습 ]

 

 

 

 

ㅡ 동물 분류 상속 ㅡ

 

class 분류

 

Animal

 포유류, 조류, 어류

개, 고래, 고양이, 닭, 비둘기, 연어, 상

 

 

Animal 클래스

 

 

 

* 하위클래스명 extends 상위클래스명

 

extends 상속

 

 

 

 

 

 

포유류 class에서는 alive method가 존재하지 않지만 상위 클래스 Animal의 method를 상속받음

 

 

" A > a > ㄱ" 순서로 상속받았을 경우,

'ㄱ' class는 A의 1, 2, 3과 a의 4, 5, 6를 모두 상속받을 수 있음

 

연어 class

 

연어 class는 Animal과 어류 class를 모두 상속받음

 

 

 

 

 

ㅡ Parents Child 상속 ㅡ

 

 

Parents class

 

상위클래스

 

Child class

 

Main class에 객체 생성

 

 

메소드 오버라이딩을 한다면 새롭게 정의된 기능을 사용

상속을 사용했을때, 부모클래스의 메서드를 재사용 하는것이 가능

 

 

 

 

 

 

 

* 오버라이딩이란?

Overriding

 

Override 란?

 

 

그럼 오버로딩은?

Overload 란?

 

 

 

 

 

 

 

 * 메소드 오버라이딩 *

 

 

 

 

super class가 가지고 있는 메소드를 그대로 가져와서(리턴타입, 메소드명, 매개변수)

중괄호{} 안의 로직(알고리즘)만 "재정의" 하는 기법

 

 

 

오버라이딩

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

* 객체 casting (형변환) *

 

 

 

 

 

 

 

 

 

기존 데이터 타입을 다른 데이터 타입으로 변환하는 것

(소괄호 이용)

 

 

객체 casting

 

 

up casting

 

하위 class가 상위 class 타입으로 자동 타입 변환하는 것(다형성)

객체 내 모든 변수, 메서드에 접근할 수 없고 상위 class의 변수, 메서드에만 접근 가능

 

* 단 오버라이딩 한 경우 하위 클래스의 메서드를 호출

 

 

 

 

down casting

 

업캐스팅 된 객체를 강제 타입 변환으로 원상복구하는 것

 

* 업캐스팅된 객체가 아닐 경우 compile error

 

 

 

객체 casting

 

 

 

 

 

 

 

 

 

 

 

 

 ** ArrayList **

 

 

 

 

 

 

 

보편적으로 많이 사용하는 collection list

 

collection list

* 인터페이스 형태

 

 

 

크기가 고정적이지 않고 가변적

원하는 위치의 추가 및 삭제가 용이

 

 

 

ArrayList < object > 변수명 = new ArrayList < object > ( ) ;

 

ArrayList

 

 

ArrayList 메소드

 

 

3:16정도 설명

 

 

 

 

 

 

 

 

 

[ ArrayList 실습 ]

 

 

 

 

 

ArrayList 선언

 

 

.add() 추가

 

 

.get() 입력 확인

 

 

.size() 크기 출력

 

 

.remove() 삭제

 

 

 

 

 

 

 

 

[ ArrayList 예제 ]

 

 

 

 

 

 

예제 1

 

 

 

ㅡ 배열에 객체 넣기 ㅡ

 

예제2 Student class

 

예제2 Main class

 

 

 

 

ㅡ ArrayList에 객체 넣기 ㅡ

 

 

Student class

 

 

 


배열에 값을 넣어주는 문장을 ArrayList 에 값을 넣어주도록 바꾸기만 하면됨

 

 

[ ArrayList 에 값 넣어주기 ]

ArrayList<Student> stds = new ArrayList<Student>(3);

 

stds.add(new Student("박소희", 50));

stds.add(new Student("박지은", 150));

stds.add(new Student("허재혁", 250));

 

stds.add(new Student(name, score));

 

Main class

 

 

* array와 ArrayList의 사용법 차이

 

배열에서 데이터를 넣어주는 방법 : 변수명 [index] =;

ArrayList 에서 데이터를 넣어주는 방법 : 변수명 .add (값) ;

 

* 배열과 ArrayList 의 공통점

 

둘다 for each를 이용하면 바로 데이터를 꺼낼 수 있음

 

 

 

 

 

 

 

 

 

 

 

 

심화 예제