자바 기초 - https://wiken.io/ken/11975
객체를 선언할때 리모콘(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)
컴파일 에러는 안 일어나는데 예외 오류 나타남