본문 바로가기

전체 글351

[java] Object 클래스 정의 - 모든 클래스의 최상위 클래스 - java.lang.Object에 위치한다. - 모든 클래스는 Object 클래스의 상속을 받아서 Object 클래스의 메서드를 @Override 가능하다. (final 메서드 제외) Object 메서드의 종류 toString() 객체 정보를 String으로 바꾸어준다. 재정의해서 많이 이용된다. public class MyDate{ int year; int month; int day; public MyDate(int year, int month, int day) { this.year = year; this.month = month; this.day = day; } @Override public String toString() { return year + "." +.. 2021. 3. 18.
[java] 인터페이스 다중 상속 인터페이스 multiple inheritance 자바는 클래스에 대해선 single inheritance를 지원한다. (c++은 다중상속 지원함) 이에 대한 이유는 Diamond Problem때문인데 나중에 따로 정리해보도록 한다. 하지만 인터페이스는 다중 상속이 지원되며 인터페이스끼리도 다중 상속이 가능하다. 클래스 extends 클래스 : 가능 클래스 extends 클래스, 클래스 : 불가능 클래스 implements 인터페이스, 인터페이스: 가능 인터페이스 extends 인터페이스: 가능 인터페이스 extends 인터페이스, 인터페이스 : 가능 ++ 참고) 인터페이스 extends 클래스 : 불가능 인터페이스 implements 인터페이스 : 불가능 인터페이스 간 상속 public interface.. 2021. 3. 12.
[java] 인터페이스 인터페이스 구현 코드가 아예 없으며 클래스 대신 interface라고 붙이면 된다. public interface Calc { double PI = 3.14; int ERROR = -99999999; public int add(int a, int b); public int sub(int a, int b); public int mul(int a, int b); public int div(int a, int b); } 인터페이스의 역할 구현코드도 없는데 대체 왜 사용할까? 설계 단계에서 명세서 역할을 한다. 클라이언트 프로그램에 어떤 메서드를 제공하는지 알려주는 것이다. 사용자는 인풋, 아웃풋만 알면 될뿐...구현 과정은 알 필요가 없기 때문이다. 따라서 '한 객체가 어떤 인터페이스의 타입이다' = 그 객체.. 2021. 3. 12.
[java] final, 템플릿 메서드 이전 게시물인 추상 클래스/메서드와 연결되는 주제이다. 먼저 final 예약어부터 살펴보자. final 예약어 final 변수는 값이 변경될 수 없는 상수이다. 오직 한번만 값을 할당할 수 있다. final 메서드 역시 값이 불가능한 메서드로 하위 클래스에서 override(재정의)될 수 없다. final 클래스의 경우 더 이상 상속되지 않는다. 대표적인 예시로 String 클래스 public static final 상수값 정의 static을 사용하면 인스턴스를 사용하지 않고 클래스로 직접 참조할 수 있다. 따라서 public static final을 만들면 c의 define과 유사한 역할을 하게 할 수 있다. 고정된 전역변수로 사용가능! 탬플릿 메서드 추상 케서드나 구현된 메서드를 활용하여 전체의 시나.. 2021. 3. 11.
[java] 추상클래스 추상 클래스 추상 메서드를 포함한 클래스. 추상 메서드는 구현 코드가 없이 선언부만 있는 메서드를 의미한다. 추상 메서드가 없어도 abstract를 붙이면 추상클래스이다. (추상 메서드나 추상 클래스 정의 시엔 예약어 abstract를 사용한다.) public abstract class Computer { public abstract void display(); //추상 메서드1 public abstract void typing(); // 추상메서드2 public abstract void wash(); public void notAbstractMethod() {}; //추상메서드 아님 public void turnOn() { System.out.println("turn on"); } public void.. 2021. 3. 11.