java/Class.Interface.Method
-
[Java] 클래스 상속관계에서의 static 메서드 재정의java/Class.Interface.Method 2022. 2. 6. 03:11
인터페이스의 static 메서드를 공부하며 그다지 깊게 생각해보지 않았는데 상속관계에서의 static 동작에 대해 부족한 부분이 있었다. static 메서드의 오버라이딩에 대해 부족한 점이 문제였다. 오버라이딩이란에 대해서 다시 한번 생각해보고 자바 메모리 구조에 대해서 한번더 생각해보는 계기였다. 공부 내용을 되생각해보니 Kotlin에서 확장 프로퍼티, 확장 함수에서 접했던 hiding 되는 내용과 비슷한 면이 있는 듯하다. class A { public static void staticMethod() { System.out.println("static A"); } } class B extends A { } public class Test { public static void main(String[] ..
-
[Java] Interface 나중 참고용java/Class.Interface.Method 2022. 2. 5. 21:05
인터페이스 내부에 선언되는 것들은 모두 public 이다. 선언 가능한 것들: 상수, 추상 메서드, 디폴트 메서드(java8), static 메서드(java8) 코드 삽입 부분의 것은 축약된 형태이다. 1. 상수 정의 interface TestInterface { int a = 100; //상수 } 모두 public static final로 간주된다. 2. 추상 메서드 정의 interface TestInterface { void abstractMethod(); //추상 메서드 } 모두 public abstract 로 간주된다. 인터페이스의 추상 메서드를 모두 구현해야 하는 점이 있었다. java8부터 구현내용이 있는 static 메서드와 디폴트 메서드를 정의할 수 있다. 두가지는 인터페이스 구현시 오버라..
-
[Java] Wrapper class 관련java/Class.Interface.Method 2021. 12. 16. 13:22
Collection에는 객체를 담아야 한다. primitive 타입은 객체가 아니라 Collection에 넣지 못한다. primitive 타입이 객체로 변경된 것에 해당하는 클래스인 Wrapper클래스를 사용하여 Collection에 넣는다. primitive타입이 객체 타입으로 변환된 클래스가 Wrapper 클래스 int타입의 Wrapper 클래스인 Integer 클래스만 확인해봄 int / Integer (int형 Wrapper 클래스) 간의 Boxing, Unboxing , AutoBoxing, AutoUnboxing package wrapperclass; public class WrapperTest { public static void main(String[] args) { Integer inte..
-
[Java] 내부 클래스java/Class.Interface.Method 2021. 8. 29. 14:46
코틀린 내부 클래스 https://hellose7.tistory.com/119 [kotlin] Nested Class [Java/Nested Class] - [Java] 내부 클래스 [Java] 내부 클래스 non-static 내부 클래스 인스턴스 생성법 반드시 외부 클래스 인스턴스를 통해 인스턴스를 생성해야한다. class Outer { class Inner { } } public.. hellose7.tistory.com 내부 클래스란 클래스 안에 선언된 클래스를 의미한다. 보통 non-static 내부 클래스를 Inner 클래스라고 부르고, static 내부 클래스를 static nested 클래스라고 부른다. non-static 내부 클래스 인스턴스 생성법 반드시 외부 클래스 인스턴스를 통해 인스턴..
-
[Java] 익명 클래스java/Class.Interface.Method 2021. 8. 28. 14:54
-익명 클래스란 class A 를 상속받아 어떠한 기능을 하는 class B를 만들어야 한다고 가정하자. class B extends A로 클래스 B를 선언한 뒤에 new B를 통해 객체를 생성한다. 만약 프로그램에서 클래스 B는 현재 한번만 사용되고 차후에 사용될 필요가 없다면?? 클래스로 선언해 놓을 필요가 없을 것이다. 익명 클래스는 기존의 방식처럼 클래스를 선언하지 않고 코드상에서 한번쓰는 방식으로 선언할 수 있다. 또한 이름을 가지지 않는다. 익명 클래스는 인터페이스 하나만 구현하거나, 클래스 하나만 상속받을 수 있다. 여러 인터페이스 동시에 구현 불가 인터페이스 구현, 클래스 상속이 동시에 불가 하나를 상속받거나, 구현해야하기 때문에 아무것도 상속받지 않거나, 아무것도 구현하지 않은 마음대로 ..