2/23(목) 자바 기초 (static, 상속, 추상 클래스,형변환)

정민지·2023년 2월 23일
0

자바 기초 - https://wiken.io/ken/11975

static 변수

객체를 선언할때 리모콘(new 클래스)도 꼭 동시에 선언해줘야됌
(아니면 쓰레기 리모콘 값이 들어감 null)

Car aCar=null;
aCar.달리다(); //함수 호출 가능

=>에러: 자바 null 포인터 Exception
(실행중 발생한 에러) 런타임 에러-Exception
컴파일시 발생한 에러 - compile error

자바-equals() : 문자열이 같은지 비교
== 연산자: 같은 레퍼런스를 가르키고 있는지

객체는 독방에 갇혀 있고

추상적인 개념은 추상 클래스로 만들어서 구체적인 클래스에서 추상 클래스를 extends

객체지향은 중복 코드를 없애기 위해서 존재한다.
-객체지향적인 방식으로

자바에서는 다중상속 불가능, 하나만 상속할수 있음
복잡한 상속 가능하나 지양->결국 다중상속 필요하게 됌

=>상속만으로 중복을 없애지 못함 -> 구성을 활용!!

하위 클래스의 함수를 상위 클래스에서 호출할수 없음
(자동 형변환 되면서 칼 객체가 무기 객체로 변환됌-무기 객체에 없는 함수면 호출X)

->상위 클래스에 같은 함수 선언하면 가능

전사, 공격, 재공격(매개변수X)

package com.ll;

public class Main {
    public static void main(String[] args) {
        전사 a전사 = new 전사();

        a전사.공격("브라이언", "칼");
        // 브라이언이(가) 칼(으)로 공격합니다.

        a전사.재공격();
        // 브라이언이(가) 칼(으)로 공격합니다.

        a전사.공격("필립", "창");
        // 필립이(가) 창(으)로 공격합니다.

        a전사.공격("마크", "지팡이");
        // 마크(가) 지팡이(으)로 공격합니다.

        a전사.재공격();
        // 마크(가) 지팡이(으)로 공격합니다.

        a전사.재공격();
        // 마크(가) 지팡이(으)로 공격합니다.
    }
}

class 전사 {
    String lastName;
    String lastWeaponName;

    void 공격(String name, String weaponName) {
        공격문구출력(name, weaponName);

        lastName = name;
        lastWeaponName = weaponName;
    }

    void 공격문구출력(String name, String weaponName) {
        System.out.println(name + "(이)가 " + weaponName + "(으)로 공격합니다.");
    }

    void 재공격() {
        공격문구출력(lastName, lastWeaponName);
    }
}

실행해서 오류 나는건 컴파일 과정에서 알수 없음
-> 컴파일은 실행을 위한 중간과정

컴파일 타임(1초~10시간) -> 에러
런타임(평생)
컴파일 할수 없는 상황에서 컴파일 에러

값이 뭐가 들어있는지 몰라서 (될수도 있고 안될수도 있기 때문에 자동형변환을 안해줌) -> 수동 형변환 해야됌 (책임을 개발자가 지는걸로 약속해야 오류X)

정수보다 실수의 범위가 더 크기 때문에

정수->실수로 변환할땐 자동 형변환
실수->정수인 경우는 수동 형변환 해야됌

상속 관계 아니면 형변환 불가능
스파크 리모콘 -> 페라리 리모콘 (X)
자동차 리모콘 -> 페라리 리모콘 (O)
컴파일 에러는 안 일어나는데 예외 오류 나타남

profile
꾸준히 성장하는 개발자

0개의 댓글