//
Search
🦁

박영승_0630

자바 클래스와 객체

class Main { public static void main(String[] args) { System.out.println("== 표준Tv 리모콘 들여오기 전 =="); 샤오미Tv a샤오미Tv = new 샤오미Tv(); 삼성Tv a삼성Tv = new 삼성Tv(); LGTv aLGTv = new LGTv(); a샤오미Tv.켜기(); a샤오미Tv.끄기(); a샤오미Tv.vr켜기(); a삼성Tv.켜기(); a삼성Tv.끄기(); a삼성Tv.ar켜기(); aLGTv.켜기(); aLGTv.끄기(); aLGTv.게임모드전환(); System.out.println("== 표준Tv 리모콘 들여온 후 =="); 표준Tv a표준Tv; a표준Tv = a샤오미Tv; a표준Tv.켜기(); a표준Tv.끄기(); a표준Tv = a삼성Tv; a표준Tv.켜기(); a표준Tv.끄기(); a표준Tv = aLGTv; a표준Tv.켜기(); a표준Tv.끄기(); LGTv aLGTv2 = (LGTv)a표준Tv; aLGTv2.게임모드전환(); } } class 표준Tv { void 켜기() { } void 끄기() { } } class 샤오미Tv extends 표준Tv { void 켜기() { System.out.println("샤오미Tv 켜집니다."); } void 끄기() { System.out.println("샤오미Tv 꺼집니다."); } void vr켜기() { System.out.println("샤오미Tv vr켜기!"); } } class 삼성Tv extends 표준Tv { void 켜기() { System.out.println("삼성Tv 켜집니다."); } void 끄기() { System.out.println("삼성Tv 꺼집니다."); } void ar켜기() { System.out.println("삼성Tv ar켜기!"); } } class LGTv extends 표준Tv { void 켜기() { System.out.println("LGTv 켜집니다."); } void 끄기() { System.out.println("LGTv 꺼집니다."); } void 게임모드전환() { System.out.println("LGTv 게임모드전환!"); } }
Java
복사
상위타입 리모콘을 사용하면 좋은 이유
부모타입으로 자식객체를 참조할 수 있다.
부모타입으로 자식객체를 참조하게 되면 부모가 가지고 있는 메소드만 사용할 수 있다.

자바 this 의미

class thisTest{ private int age; public int getAge() { return age; } public void setAge(int age) { this.age = age; } } // this는 내부에서만 사용된다.
Java
복사
this를 사용하면, 메서드의 인수나 변수에 필드와 같은 이름을 붙여도 그것들을 구분하여 사용할 수 있다. this는 주로 생성자와 메소드의 매개변수 이름이 필드와 동일한 경우, 인스턴스 멤버인 필드임을 명시하고자 할때 사용.

class와 extents 실행되는 세부과정

class Main { public static void main(String[] args) { 무기 a무기 = new(); a무기.공격(); } } class 무기 { } classextends 무기 { void 공격() { } }
Java
복사
1.
`a무기` 변수(창고)에게 접근한다.
2.
창고의 문을 연다.
3.
무기가 있을 줄 알았는데 무기 리모콘이 있다.
4.
무기리모콘의 버튼중에서 `공격` 버튼을 누르려고 시도한다.
5.
버튼을 못찾아서 실패!!
* 안되는 이유
실제로 리모콘에 연결된 칼 객체는 `공격` 기능을 가지고 있다.
안되는 이유는 단순히 버튼이 없어서 이다.
자바에서는 위험하다고 판단되면, 통과시켜주지 않는다 => 개발자의 서명 필요
자바에서는 리모콘의 버튼이 추가되는 것을 극도로 무서워한다. (편리해지긴 하지만)
자바에서는 리모콘의 버튼이 제거되는 것은 늘 안전하다고 판단된다. (불편해지긴 하지만)