본문 바로가기

프로그래밍 언어/자바의 정석 기초편82

자바의 정석 기초편 ch7-39 인터페이스의 장점1 inter: ~사이 인터페이스: 껍데기 왼쪽은 유연하지 않고 변경에 불리하다. 껍데기와 알맹이가 붙어있으니까 오른쪽은 알맹이(B)를 다른 걸(C)로 바꿀 수 있다. (아래 그림 User - Provider) A가 B를 직접 사용하도록 코드를 작성하면 B를 C로 바꿀 때 A도 바꿔야 한다. 그런데 중간에 인터페이스를 넣어 놓으면 B클래스를 껍데기와 알맹이 분리시킴. 이젠 알맹이(C로)를 바꾸기 쉽게 됨 A클래스를 변경 할 필요가 없다. A는 B하고 관계가 없다. 직접 접근하지 않으니까 2023. 3. 1.
자바의 정석 기초편 ch7-38인터페이스와 다형성 다중 상속의 문제: 충돌 Unit, Fightable에도 attack(){}이라는 메서드가 있다면 어떤 걸 물려받아야 할지 모른다. 그러나 Fightable은 추상메서드를 가지므로 {} 구현부가 없어서 충돌 문제가 안생긴다. 인터페이스 타입 참조변수로 그 인터페이스를 구현한 객체를 가리키는 게 가능하다. Fightable f로 Fighter() 객체를 가리키는 것이 가능하다. 대신 Fightable에 정의된 메서드 멤버 2개만 사용 가능하다. Fightable리모컨에는 move, attack밖에 없으니까 매개변수의 타입이 인터페이스라는 것은 그 인터페이스를 구현한 클래스의 객체만 가능하다는 뜻이다. attack메서드는 매개변수로 Fightable인터페이스를 구현한 클래스의 객체만 받겠다는 뜻이다. 반환 .. 2023. 3. 1.
자바의 정석 기초편 ch7-35~37 인터페이스의 선언, 상속, 구현 객체지향 3~4개씩 2배속으로 복습하자 인터페이스(프로그래밍 관점에서): 추상 메서드의 집합 구현된 것이 전혀 없는 설계도. 껍데기(모든 멤버가 public) 객체에서 다른 객체의 변수에 접근하려면 메서드를 통해서 접근해야 한다(캡슐화). 데이터를 메서드가 감싸고 있다. 왜? 데이터를 보호하려고 그래서 직접 변수를 접근한다. t.hour X t.getHour() O 8 각형의 껍데기가 인터페이스이다. 제일 바깥에 노출되어 있으니까 public이다. 추상클래스와 인터페이스 차이가 뭔가? 추상클래스는 일반클래스인데 추상 메서드를 가지고 있다. 일부가 미완성 인터페이스는 완전히 아무것도 없고 추상 메서드만 가지고 있다. 구현된 게 아무것도 없다. 멤버변수, 생성자도 가질 수 없다. 인터페이스 선언 interf.. 2022. 10. 24.
자바의 정석 기초편 ch7-33,34 추상클래스의작성2 50인치 TV 모델이 A, B, C가 있다고 가정하자 설계도가 비슷하다. 다 똑같은데 노란색 부분만 다르다. 그럼 얘네들을 설계도를 이렇게 관리하면 다 고쳐야 한다. 미완성 설계도를 바탕으로 설계도를 완성하는 것이다. 자손들은 완성된 설계도 이렇게 부모, 자손 관계를 해놓으면 중복이 제거되고 자손들은 노란색 부분만 추가하면 설계도가 완성된다. 처음보다 설계도 만들기가 쉬워졌다. 새로운 모델을 만들때도 미완성 설계도(추상클래스의 장점) 1. 설계도를 쉽게 작성할 수 있다. 미완성 설계도를 바탕으로 만들면 되니까 2. 관리가 용이하다. 하나의 요소를 하트로 바꾼다면 나머지도 다 바뀐다. 만약 추상클래스가 아니라면 하나씩 전부 바꿔야 한다. 추상클래스를 상속받으면서 클래스가 점차 구체적이게 된다. 추상클래스를.. 2022. 10. 24.