본문 바로가기

java22

인터페이스 - 느슨한 결합력 강력한 결합(인터페이스 없는 경우) 우선 강한 결합력을 가지는 예제를 보자. 맥북을 샀는데 키보드는 반드시 애플의 매직 키보드만 써야한다고 생각해보자. 그렇게 되면 맥북 클래스는 반드시 매직키보드를 사용해야한다. 코드로 봐보자. 먼저 실행부분인 Program.java에서 맥북 클래스를 만든다. 이때 사용자는 단지 맥북 클래스만을 만들었을 뿐인데. MacBook.java를 보면 사용자가 시키지도 않은 MagicKeyBoard를 만들어버린다. 이는 MacBook클래스와 MagicKeyBoard클래스가 아주 강한 결합력을 가졌다고 할 수 있다. 사용자가 맥북으로(Program.java의 7번째 라인) typing을 하기 위해서는 반드시 매직키보드가 만들어져야하는 것이다. 심지어 사용자는 매직 키보드가 만들어 .. 2021. 4. 25.
자바의 다형성 자바의 다형성에 대한 이해가 부족해서 다시 공부하고 나중에 또 까먹을까봐 다시 정리해둔다. 다형성: 여러가지 형태를 가질 수 있는 능력. 더 구체적으로 : 조상클래스의 타입의 참조 변수로 자손 클래스의 인스턴스를 참조할 수 있다. 특정 클래스가 다른 클래스를 상속받으면 이는 자식클래스와 부모클래스의 관계를 가진다. 여기서 무조건! 자식 클래스는 부모 클래스보다 같거나 더 많은 멤버를 가진다. 그런데 만약 참조변수는 부모클래스 타입으로 하고, 인스턴스는 자손 클래스 타입으로 생성한다면? 이것이 다형성이다. 즉 부모 클래스의 참조변수가 자식 클래스의 인스턴스를 참조할 수 있다. 모든 클래스의 부모인 Object클래스와 내가 정의한 PolyTest 클래스를 예로 들어보자 (내가 정의하던 누가 정의하던 모든 클.. 2021. 3. 25.
Java - 4강 추상 클래스, 템플릿 메서드, final예약어 추상 클래스(abstract class)는 상속을 하기 위해 만드는 클래스이다. 즉 뼈대만 되는 클래스이고 절대 객체화 되어서는 안되는 클래스다. 이렇게 객체화 될 수 없게 하는 기능을 자바가 지원하는데, 바로 abstract이다. abstract예약어를 선언하여 추상클래스를 선언할 수 있고, 추상메서드도 마찬가지이다. Computer라는 추상 매서드, 그리고 이를 상속받는 Desktop, NoteBook, MyNoteBook 클래스를 생각해보자. _________ Desktop Computer ----( ------- NoteBook --------MyNoteBook package abstractex; public abstract class Computer { // 최상위 추상 클래스 public ab.. 2021. 2. 21.
Java -3강 다형성, instanceof, 다운캐스팅 2강에서 이해한 가상메서드와 묵시적 형 변환을 바탕으로 다형성을 이해해보자. 다형성이란? 하나의 코드가 여러 자료형으로 구현되어 실행되는 것. 즉, 코드에서 여러 실행 결과가 나오는 것이다. 최상위 클래스로 Animal클래스가 있고, 이를 상속받는 Human, Tiger, Eagle클래스 가 있는 경우를 생각해보자. package polymorphism; import java.util.ArrayList; class Animal{ public void move() { System.out.println("동물이 움직입니다."); } } class Human extends Animal{ public void move() { System.out.println("사람이 두 발로 걷습니다."); } public v.. 2021. 2. 21.