[멋쟁이사자처럼 부트캠프 TIL 회고] 백엔드 Java 부트캠프 6일차

2024. 12. 9. 16:53·🏕 멋사 Java 백엔드 13기/TIL

생성자

형태

접근제한자 메소드명=클래스명(매개변수)

 

중복된 생성자 있을 경우 this 사용

public TV(boolean power, int channel, int volume) {
    System.out.println(" TV(boolean power, int channel, int volume) 생성자 호출");
    this.power = power;
    this.channel = channel;
    this.volume = volume;
}
public TV(boolean power, int channel) {
    this(power,channel,0);
    System.out.println(" TV(boolean power, int channel) 생성자 호출");
    /*this.power = power;
    this.channel = channel;
*/}

public TV(boolean power) {
    System.out.println(" TV(boolean power) 생성자 호출");
    this.power = power;
}
public TV(){
    System.out.println(" TV() 생성자 호출");
}

 

상속

일반화 + 확장의 개념으로, 부모가 가진 것을 자식이 물려받아 사용할 수 있다는 것을 의미함 

접근제한자 [abstract|fianl] class 클래스명 extends 부모클래스명 { ....} 

 

특징

  • 자바는 다중 상속 허용하지 않음
  • 모든 클래스는 Object의 자손이다.
  • 다형성
    • 메소드 오버라이딩(Overriding) : 상위 클래스의 메소드를 하위 클래스가 재정의하는 것
      • 필드는 오버라이딩 되었을 때의 타입을 따른다.
class Bird{

    public void song(){
        System.out.println("새가 노래하다.");
    }
}

class Pigeon extends Bird{
    @Override
    public void song(){
        System.out.println("구구");
    }
}

class Duck extends Bird{
    @Override
    public void song(){
        System.out.println("꽥꽥");
    }
}

class Sparrow extends Bird{
    @Override
    public void song(){
        System.out.println("짹쨱");
    }
}

public class BirdExam {
    public static void main(String[] args) {
        Bird bird = null;
        if(args[0].equals("비둘기")) {
            bird = new Pigeon();
        }else if(args[0].equals("오리")) {
            bird = new Duck();
        }else if(args[0].equals("참새")){
            bird = new Sparrow();
        }

    bird.song();
    }
}

 

  • 다운캐스팅 (부모가 자식의 메소드를 사용)
    • 하위 클래스로의 다운캐스팅 시 타입을 명시적으로 지정
      • 명시적 형변환 시 instance of 연산자를 사용하여 Class에 속하는지 확인 후 true 값이 나올 때만 실행 (예시 2)
        • p instanceOf Child일 경우, p가 Child이거나 Child를 상속받는 클래스라면 true를 리턴함. 
        Car sb1 = new SeatBus();
        Bus sb2 = new SeatBus();


		//다운캐스트 방식
        SeatBus sb = (SeatBus)sb1;
        sb.좌석을예약하다();
        
        // 혹은 
        ((SeatBus)sb1).좌석을 예약하다();

 

예시 2

package Day06;

public class Parent {

    int i =5;


    public int getI(){

        return i;
    }
}
package Day06;

public class Child extends Parent {

    int i = 10;

    public int getI(){
        return i;
    }
}
public class Exam02 {
    public static void main(String[] args) {

        Child child = new Child();
        System.out.println(child.i);

       //상속
        //1. 부모는 자식을 가리킬 수 있다.
        Parent p =null; //Parent를 담을 수 있는 타입
        Child c = null;

        p = new Child(); // 묵시적 형변환이 일어남.

        //c= new Parent(); 는 X. 자식이 부모를 가리킬(담을) 수 없다.

        if(p instanceof Child) {
        //명시적으로 형변환 할 때 instanceof를 사용해서 오류 방지
            c = (Child) p; //실제로는 p가 가리키는 인스턴스가 Child임.
        }
    }
}

 

 

예시 3

package Day06;

public class Exam06 {

    public static void test(Parent p){
        System.out.println(p.i);
        System.out.println(p.getI());
    }
    public static void main(String[] args) {
        Parent p = new Parent();
        System.out.println(p.getI());

        Child c = new Child();
        System.out.println(c.i);
        System.out.println(c.getI());

        Parent pc = new Child();
        System.out.println(pc.i);
        System.out.println(pc.getI());


        test(p);
        test(c);
        test(pc);

    }
}

 

// 출력값 //

5

10
10

5
10

5
5

5
10

5
10

 

'🏕 멋사 Java 백엔드 13기 > TIL' 카테고리의 다른 글

[멋쟁이사자처럼 부트캠프 TIL 회고] 백엔드 Java 부트캠프 11일차 | DB  (1) 2024.12.16
[멋쟁이사자처럼 부트캠프 TIL 회고] 백엔드 Java 부트캠프 8일차  (1) 2024.12.11
[멋쟁이사자처럼 부트캠프 TIL 회고] 백엔드 Java 부트캠프 4일차  (0) 2024.12.05
[멋쟁이사자처럼 부트캠프 TIL 회고] 백엔드 Java 부트캠프 3일차  (1) 2024.12.04
[멋쟁이사자처럼 부트캠프 TIL 회고] 백엔드 Java 부트캠프 2일차  (0) 2024.12.03
'🏕 멋사 Java 백엔드 13기/TIL' 카테고리의 다른 글
  • [멋쟁이사자처럼 부트캠프 TIL 회고] 백엔드 Java 부트캠프 11일차 | DB
  • [멋쟁이사자처럼 부트캠프 TIL 회고] 백엔드 Java 부트캠프 8일차
  • [멋쟁이사자처럼 부트캠프 TIL 회고] 백엔드 Java 부트캠프 4일차
  • [멋쟁이사자처럼 부트캠프 TIL 회고] 백엔드 Java 부트캠프 3일차
Cofish
Cofish
  • Cofish
    Codesea
    Cofish
  • 전체
    오늘
    어제
    • 분류 전체보기 (19)
      • 🏕 멋사 Java 백엔드 13기 (17)
        • TIL (15)
        • 자료구조 (2)
      • 네트워크 (2)
        • TCP•IP (2)
      • 🎨 블로그 꾸미기 (0)
      • 💬 일상 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    #멋쟁이 사자처럼
    멋쟁이사자처럼 #부트캠프
    java 기초
    백엔드 java 부트캠프
    디자인 패턴
    MySQL
    멋쟁이 사자처럼
    db 기초
    부트캠프
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
Cofish
[멋쟁이사자처럼 부트캠프 TIL 회고] 백엔드 Java 부트캠프 6일차
상단으로

티스토리툴바