더존 노션 필기 옮기기/Java
Java 6일차 객체배열, 상속
대엽
2022. 8. 30. 17:42
일반 배열 만드는 형식, 초기화 방식
int[] intArr = new int[5];
int[] intArr2 = new int[] { 11, 22, 33, 44, 55 }
객체 배열 만드는 형식, 초기화 방식
Car[] carArr = new Car[5]
carArr[0] = new Car("차1",30);
carArr[1] = new Car("차2",60);
carArr[2] = new Car("차3",90);
carArr[3] = new Car("차4",120);
carArr[4] = new Car("차5",150);
배열 : 동일한 자료형의 모음
객체 배열 : 동일한 객체의 모음
객체배열에서 인덱스 하나에 접근하면 객체 이다.
carArr[0].information()
carArr[0].setName() , getName() ... 인덱스 하나를 지정해서 접근가능.
상속 ( inheritance )
/*상속(inheritance)
* 부모가 가지고 있는 재산(자바에서는 클래스가 가지는 멤버)을 자식이 물려받는 의미
* 자바에서의 상속은 부모클래스의 확장(extend)의 개념
* 물려받아서 자신의 것 처럼 사용하는 것 뿐 아니라 추가적인 멤버도 작성이 가능
* 특히 메소드 재정의(overriding)라는 기술을 이용해서 부모가 가진 메소드를 재정의 하는 것도 가능
*
* 메소드 재정의(overriding)이란 부모가 가지는 메소드 선언부를 그대로 사용하면서
* 자식클래스가 정의한 메소드대로 동작하도록 구현 몸체 부분을 새롭게 다시 작성하는 기술이다.
* 메소드 재정의를 하면 메소드를 호출할 시 재정의한 메소드가 우선적으로 동작하게 된다.
* */
부모 클래스의 성질을 물려받는다. ( 필드, 메소드 )
/* 상속이라는 기술을 사용하게 되면 얻게되는 이점은 크게 두 가지로 볼 수 있다.
* 1. 새로운 클래스를 작성할 시 기존에 작성한 클래스를 재사용할 수 있다.
* 1-1. 재사용 시 생산성을 크게 향상시킬 수 있다. (코드가 줄어듬 ,새롭게 작성하는거보다 빠르다)
* 1-2. 공통적으로 사용하는 코드가 부모클래스에 존재하면 수정사항이 생길 시 부모 클래스만 수정해도
* 전체적으로 적용된다. (유지보수성 증가)
* 2. 클래스간의 계층 관계가 형성되며 다형성의 문법적인 토대가 된다.
*/
상속 사용 방법
Car.java
public class Car{ // 모든 종류의 차는 자동차라고 대분류 할 수 있다. 부모 역할을 하는중
private String brand;
Car(String brand){ // 생성자
this.brand = brand;
}
public void soundHorn(){ // 경적
System.out.println("일반 자동차 경적")
}
}
FireCar.java
public class FireCar extends Car{ // Car의 성질을 물려받아서 쓰겠다 부모를 상속받은 자식클래스
private String color;
FireCar(String brand, String color){ // 부모의 생성자를 이용해서도 초기화가 가능하다
super(brand); // 부모의 생성자(Car ) 를 호출
this.color = color;
}
@Override
public void soundHorn(){
// super.soundHorn(); // 부모의 soundHorn 함수를 실행함
// 부모에도 똑같은 이름의 함수가 있는데, 자식에서 재정의(오버라이딩) 함
System.out.println("소방차의 경적")
}
}
super : 부모클래스의 인스턴스 주소를 보관하는 레퍼런스 변수
super() : 부모클래스의 생성자를 호출하는 함수