본문 바로가기

diary/byromself

06/14/22 java/ 상속 + 추상 클래스 + 인터페이스 보충

상속 

extends 키워들를 사용해 하위 클래스에서 상위 클래스의 모든 멤버를 사용할 수 있도록 한다. 자식은 여럿이 될 수 있지만 부모는 단 하나. 

class 하위클래스 extends 상위클래스 { ... }

+ 하위 클래스 실행 시 상위 클래스의 인스턴스가 먼저 생성된다.  = 상위 클래스의 생성자가 먼저 호출되고, 하위 클래스의 생성자가 호출된다.

 


추상 클래스

한 개 이상의 추상 메서드를 가지는 클래스로 abstract 키워드로 나타낸다. 상위 클래스로 사용될 수 있지만 자신의 인스턴스를 만들 수는 없다. 추상 클래스를 상위 클래스로 상속받은 하위 클래스는 반드시 추상 클래스의 모든 추상 메서드를 구현해야 한다. 

abstract class 클래스 {
    abstract void method();
}

 


인터페이스 

 

상수(static final)와 abstract, (default, static → java 8부터) 메서드만으로 이루어진다. 클래스에서 implements 키워드를 사용해 인터페이스를 구현할 수 있다. 인터페이스를 구현하는 클래스는 반드시 모든 추상 메서드를 구현해야 한다.

 

인터페이스를 사용하는 이유 → 하나의 인터페이스를 여러 클래스가 구현할 수 있다. 

e.g. List 인터페이스를 ArrayList와 LinkedList 클래스가 구현한다.  

 

abstract 메서드

바디를 가지지 않는 구현되지 않은 메서드로, 인터페이스를 구현하는 클래스에서 반드시 구현해주어야 한다.

 

default 메서드

인터페이스에서 default 메서드를 자체적으로 구현하는 것이 가능하다. 해당 인터페이스를 구현하는 클래스에서 default 메서드를 그대로 사용하거나 오버라이딩해 사용할 수 있다. 여기서 default는 접근 제한을 나타내지 않는다.

→ 인터페이스에 default로 메서드를 구현해 놓음으로서 인터페이스가 변경이 되어도 클래스에서 default 메서드를 구현할 필요가 없음.

 

static 메서드

인터페이스에서 구현한 static 메서드는 인터페이스명.메서드명() 형식으로 호출한다. 

 

+) default vs. static 메서드

 

Default method vs static method in an interface in Java?

Default method vs static method in an interface in Java? An interface in Java is similar to class but, it contains only abstract methods and fields which are final and static. Since Java8 static methods and default methods are introduced in interfaces. De

www.tutorialspoint.com

default 메서드

메서드를 구현하는 클래스의 인스턴스로 접근이 가능하다. → 클래스명.메서드명()

인터페이스를 구현하는 클래스에서 오버라이딩이 가능하다.

static 메서드

인터페이스와 함께 메모리에 로드되므로 인터페이스를 통해 접근한다. → 인터페이스명.메서드명()

인터페이스를 구현하는 클래스에서 오버라이딩할 수 없다.

 

 

 

* 헷갈렸던 것

클래스가 인터페이스를 구현한다는 것은 인터페이스의 모든 추상 메서드를 구현한다는 것을 의미한다. 하지만 인터페이스를 구현하는 모든 클래스들이 같은 멤버로 구성된다는 것을 의미하는 것은 아니다. 클래스는 여러 인터페이스들을 구현하는 것이 가능하고, 인터페이스를 구현하는 클래스에 클래스 멤버가 추가되는 것이 허용되기 때문이다.

 

 

List (Java SE 11 & JDK 11 )

An ordered collection (also known as a sequence). The user of this interface has precise control over where in the list each element is inserted. The user can access elements by their integer index (position in the list), and search for elements in the lis

docs.oracle.com

 

LinkedList (Java SE 11 & JDK 11 )

Returns a list-iterator of the elements in this list (in proper sequence), starting at the specified position in the list. Obeys the general contract of List.listIterator(int). The list-iterator is fail-fast: if the list is structurally modified at any tim

docs.oracle.com

 

ArrayList (Java SE 11 & JDK 11 )

Resizable-array implementation of the List interface. Implements all optional list operations, and permits all elements, including null. In addition to implementing the List interface, this class provides methods to manipulate the size of the array that is

docs.oracle.com

 

 

 

++)

 

05/13/22 java/ 다형성과 추상화

다형성 polymorphism 하나의 객체가 여러가지 형태를 가질 수 있는 것 “여러가지의 형태” 한 타입의 참조 변수를 통해 여러 타입의 객체를 참조할 수 있도록 하는 것 > 무슨 말? 상위 클래스 타입

romcanrom.tistory.com

 


스프링 하다가 멘붕 와서 정리