반응형

자바의정석 113

자바의 정석 7장 연습문제 (1~19)

내가 쓴 답 class SutdaDeck { final int CARD_NUM = 20; SutdaCard[] cards = new SutdaCard[CARD_NUM]; SutdaDeck() { for(int i = 0; i < CARD_NUM; i++) { if(i < 10) { cards[i].num = i+1; if(i == 1 || i == 3 || i == 8) cards[i].isKwang = true; } else { cards[i].num = i-9; } } } } 하지만 더 간결하게 작성할 수 있었다 SutdaDeck() { for(int i = 0; i < CARD_NUM; i++) { cards[i].num = i%10 + 1; cards[i].isKwang = ((i < 10) &&..

자바의정석 2022.03.31

[자바의 정석 - 기초편] ch8-1~3 프로그램오류. 예외 클래스의 계층구조

ch8-1 프로그램 오류 프로그램 오류에는 종류가 3가지가 있다. 1) 컴파일 에러 : 컴파일 할 때 2) 런타임 에러 : 실행할 때 > 프로그램 종료 3) 논리적 에러 : 컴파일도 통과 실행도 통과 하지만 작성 의도와 다르게 동작하는 경우 컴파일 에러 javac.exe (자바 컴파일러) 이클립스에서 자동으로 해준다. 컴파일러 1) 구문체크 (문법에 맞게) 2) 번역 3) 최적화 public class ExceptionTest { public static void main(String[] args) { system.out.println(args[0]); } } 간단한 계산은 컴파일러가 계산을 한다 (최적화) extends Object 와 같은 생략된 코드들을 추가해준다. 실행중 발생하는 에러를 : 런타임..

자바의정석 2022.03.24

[자바의 정석 - 기초편] ch7-51,52 익명 클래스

ch7-51 익명 클래스 (anonymous class) 익명 이름이 없는 클래스 / 일회용 클래스 / 클래스의 정의와 생성을 동시에 이름이 없는 클래스이기 때문에 조상 이름을 대신 사용한다. MyClass mc = new MyClass() ; (x) new Object() {} new 조상이름을 쓰던가, 인터페이스 이름을 쓰던가 클래스 생성과 정의를 하나로 합친 것 조상의 이름을 사용한다. "이름이 없고, 생성과 정의를 동시에 한다, 조상 또는 인터페이스의 의 이름을 사용함" 내부 클래스이기 때문에, 외부 클래스의 이름이 따라온다. AWT (Java의 윈도우 프로그래밍) 대부분 클래스 정의를 하고, 객체 생성을 위에서 한다. 대부분 클래스가 일회성이다. 한 번 쓰고 사용하지 않음. 내부에서 주로 사용한..

자바의정석 2022.03.24

[자바의 정석 - 기초편] ch7-45~50 내부클래스의 제어자와 접근성

ch7-45 내부 클래스의 제어자와 접근성 클래스 앞에는 (default : 아무것도 안 붙이는 것 ) 아니면 public 하지만 내부 클래스 앞에는 private protected 도 추가로 사용 가능하다. iv와 cv에 가능한 것처럼.... 내부 클래스에도 적용된다. static 멤버를 가질 수 있는 것은 static 내부 클래스만 가질 수 있다. 내부 클래스를 정의 했는데 static 멤버가 필요하면 내부 클래스를 static 내부 클래스로 정의하면 된다. static 멤버 자체가 객체 생성 없이 사용 가능해야 한다. 근데 만약 static이 아니면, 모순이 발생할 수 밖에 없기 때문에 static 내부 클래스가 아닌 내부 클래스에서 static 변수를 사용할 수 없다. 하지만 상수인 경우에는 fi..

자바의정석 2022.03.24

[자바의 정석 - 기초편] ch7-42~44 내부클래스의 종류, 특징, 선언

ch7-42 내부 클래스 (inner class) 객체를 만들어야 쓸 수 있는데 내부 클래스에서는 객체 생성 없이도 A의 멤버 접근이 가능하다. class AAA { int i = 100; BBB b = new BBB(); class BBB { void method() { //AAA a = new AAA(); //System.out.println(a.i); System.out.println(i); // 객체 생성 없이 외부 클래스의 멤버 접근 가능 } } } // BBB 클래스는 AAA 클래스 내부에서만 사용할 경우 내부 클래스로 만드는 것이 용이 (캡슐화) class CCC { //BBB b = new BBB(); } public class InnerTest { public static void mai..

자바의정석 2022.03.24

[자바의 정석 - 기초편] 7-40,41 디폴트 메서드와 static메서드에 대한 강의입니다. 객체지향개념의 마지막 강의

ch7-40 디폴트 메서드와 static 메서드 - 인터페이스에 디폴드 메서드, static 메서드 추가 가능 (jdk 1.8부터) 자바는 c++보다 배우기 쉽다. 인터페이스에서는 추상메서드만 가질 수 있었는데, 기존 원칙을 깨고, default 메서드와 static 메서드를 추가할 수 있게 되었다. (상수는 기본) - 인터페이스에 새로운 메서드(추상 메서드)를 추가하기 어려움. 해결책 : 디폴트 메서드 (default method) - 디폴트 메서드는 인스턴스 메서드( 인터페이스 원칙 위반 ) 몸통이 있는 메서드를 추가할 수 있게 해주는 것 default void newMethod() {} - 디폴트 메서드가 기존의 메서드와 충돌할 때의 해결책 규칙 잘 모르겠으면, 모르는 대로 직접 오버라이딩 하면 해..

자바의정석 2022.03.23

[자바의 정석 - 기초편] ch7-39 인터페이스의 장점2

ch7-39 인터페이스의 장점 - 개발 시간을 단축할 수 있다. - 변경에 유리한 유연한 설계가 가능하다. - 표준화가 가능하다 (... JDBC) - 서로 관계없는 클래스들을 관계를 맺어줄 수 있다. B가 완성이 되고 나서, A를 이용할 수 있다. 개발 시간이 오래 걸리지만, A는 I를 사용하면 되기 때문에 (껍데기만 있으면) 인터페이스는 추상메서드의 집합이며, I 라는 추상메서드를 호출 가능하다. 캡슐화 iv 직접 접근 불가 (private) 그래서 인터페이스를 이용하면 개발 시간을 단축할 수 있다. 예전에 자바 어플리케이션을 개발할 때, DB를 이용한 개발을 했다. 데이터를 요청하고, 데이터베이스는 여러 사람이 data를 공유 가능하게끔 (oracle, mysql ... ) 중간에 db를 바꾸면 j..

자바의정석 2022.03.23

[자바의 정석 - 기초편] ch7-39 인터페이스의장점1

ch7-39 인터페이스(interface)의 장점 - 두 대상(객체) 간의 '연결, 대화, 소통'을 돕는 '중간 역할'을 한다. 껍데기 : 두 대상이 직접 소통할 수도 있지만, 중간에 중개해주는 역할이 있을 때 더 긍정적인 역할이 있기 때문에 중간에서 역할을 돕고 있다 기계가 있고, 사람이 기계를 직접 조작하기 쉽지 않기 때문에 기계에 예쁘게 껍데기를 씌운다. 사람이 사용하기 편리한 인터페이스를 기계에 붙여 놓으면, 편리하게 사용할 수 있기 때문에 자판기의 껍데기 같은 인터페이스를 예로 들 수 있다. 컴퓨터가 있다. 이 하드웨어를 직접 다루려면 쉽지 않다. 그래서 나온 것이 "윈도우" GUI 라는 그래픽 유저 인터페이스가 나왔다. 컴퓨터와 사람 간의 소통을 돕는 중간 역할 (윈도우, gui도 껍데기이다)..

자바의정석 2022.03.23

[자바의 정석 - 기초편] ch7-38인터페이스와 다형성

ch7-38 인터페이스를 이용한 다형성 다형성 : Tv t = new SmartTv() ; : 조상 참조변수로 자손 객체를 가리킬 수 있는 것 인터페이스로 다중 상속의 효과를 볼 수 있다. 대신 Fightable에 정의된 메서드만 사용 가능 매개변수 타입이 인터페이스라는 것은, 매개변수에 타입이 인터페이스를 구현한 클래스의 인스터스만 가능하다는 의미 - 인터페이스를 메서드의 리턴타입으로 지정할 수 있다. Fightable 인터페이스를 구현한 클래스의 인스턴스를 반환 인터페이스를 구현한 놈을 반환한다는 뜻 Fighter가 Fighter로 형변환 가능하기 때문에 (Fightable) 생략 메서드의 반환타입이 인터페이스면, 반환 객체는 인터페이스를 구현한 클래스의 인스턴스여야 한다. - 실습 구현하는 클래스가..

자바의정석 2022.03.23

[자바의 정석 - 기초편] ch7-35~37 인터페이스의 선언, 상속, 구현

ch7-35 인터페이스(interface) - 추상 메서드의 집합 프로그래밍 관점에서의 인터페이스에 대한 개념이다. static 메서드, 상수 / 디폴트 메서드 = 부수적인 것 - 구현된 것이 전혀 없는 설계도. 껍데기 (모든 멤버가 public) 변수에 메서드를 통해서 접근 하는 것 = 캡슐화 (iv를 보호하기 위함) > 직접 변수 접근 t.hour x / t.getHour() 그 껍데기가 인터페이스의 껍데기 ( 모든 멤버가 public ) - 추상클래스와 인터페이스의 차이가 무엇인가? 추상클래스는 일반 클래스이지만, 추상 메서드를 가지고 있는 것이라면 인터페이스는 완전히 아무것도 없는 것 생성자 iv 가 가장 큰 차이이다. 인터페이스는 인스턴스 변수를 가질 수 없지만, 추상클래스는 iv 를 가질 수 ..

자바의정석 2022.03.22
반응형