목록Language/Java (58)
한 걸음 두 걸음
instanceof 객체의 타입이 실제로 무엇인지 알아내거나 형변환이 가능한지 알아야 하는 경우, instanceof 연산자를 사용합니다. A(객체) instanceof B(타입클래스) 더 명확하게 이야기하자면, 자기자신의 클래스 객체인가 자식클래스의 객체인가 확인하기 위해 사용합니다. instanceof 연산자는 자식 instanceof 부모 관계이면 true 부모 instanceof 자식 관계이면 false를 반환합니다. 동물을 상속받는 개, 고양이, 다람쥐 클래스가 있을 때, Class Animal { public int a; Animal(){ a = 10; } } Class Cat extends Animal{ public int b; Cat(){ b = 20; } }(예시, 동물 / 고양이클래스)..
람다표현식이란? JAVA8에서 새롭게 등장한 함수형 프로그래밍 기법입니다. 이를 통해 JAVA를 보다 간결하게 작성할 수 있게 되었습니다. 람다 표현식은 함수형 인터페이스와 호환됩니다. Interface의 형태를 빌려 함수를 변수처럼 사용할수 있는 개념입니다. 함수형 인터페이스란? 추상 메소드 하나만 갖고 있는 인터페이스를 이르는 말합니다. 1. Comparator 인터페이스의 추상메소드 ``` int compare(param1, param2); ``` Comparator인터페이스에는 데이터의 대소를 비교하는 추상메소드가 있습니다. 임의로 한 개의 클래스를 만들어보겠습니다. class BigNum implements Comparator { public int compare(int num1, int num..
다형성 다형성이란? 같은 함수를 불러도, 객체의 타입에 따라 다른 결과를 얻는 것입니다. 이는 형변환과 관련이 있습니다. 상향 형변환 동물을 상속받는 개, 고양이, 다람쥐 클래스가 있을 때, 동물 d = new 동물();은 당연히 가능하지만, 동물 d = new 고양이();는 당연하지 않아보이지만 가능하다. 이 떄 발생하는 것이 바로 상향형변환입니다. 부모클래스의 참조변수(d)로 자식클래스의 객체를 참조했기 때문에, 부모클래스가 자식클래스에게 물려준 것은 사용가능하지만, 자식이 확장해서 만든(부모에게는 없는) 것들에는 접근할 수 없습니다. 예를 들어, Class Animal { public int a; Animal(){ a = 10; } } Class Cat extends Animal{ public in..
인터페이스 인터페이스 개념 인터페이스란 추상클래스의 확장개념으로, 서비스 공급자(서버)와 사용자(클라이언트)간의 계약을 표현하는 것입니다. 인터페이스의 모든 필드(변수)는 모두 final static이 붙은 상수로 간주됩니다.(생략되어 표시되지 않습니다.) 메소드는 추상메소드만 구현할 수 있었으나, JAVA9부터는 구현메소드와 정적메소드, private 메소드가 작성될 수 있게 되었습니다.(private메소드는 default메소드에서 호출하여 사용할 수 있습니다.) public interface A{ double MAX = 10; //상수필드 //추상메소드 public void print(); public void draw(int a ); //디폴트메소드 : 구현메소드를 작성하기 위햐서는 default를..
자바의 모든 클래스는 Object클래스를 상속받습니다.(명시적으로 선언하지 않으면 모든 클래스는 Object클래스를 상속받습니다.) 즉, Object class는 루트클래스입니다. 이는 java.lang패키지에 들어있는 클래스입니다. 그렇다면 Object의 메소드를 활용할 수 있을텐데, 어떤 메소드가 있는지 확인해볼까요? String toString() 객체의 클래스명과 해시코드를 문자열로 반환합니다. 재정의를 통해 클래스의 변수 상태를 확인할 때 많이 씁니다.(클래스 내에서 this()로 내부 클래스를 호출하거나 객체를 출력시키면 toString이 호출됩니다. 때문에 디버깅할 때 자주 사용합니다.) boolean equals(Object) 파라미터로 오는 Object와 자신의 객체가 같은지 확인하는 함..
추상클래스 abstract 키워드를 활용한 클래스, 최소한 하나 이상의 abstract메소드를 갖는 클래스를 말합니다. (추상메소드가 아닌 메소드도 가질 수 있습니다.) public abstract class Car { }; //세미콜론을 붙여주어야합니다. 이는 객체 생성이 불가능합니다. 추상메소드 abstract 키워드를 활용한 메소드로, 바디에 구현하는 코드가 없습니다. public abstract class Car { public abstract void move(); //구현되는 코드가 없습니다. }추상클래스는 아직 완성되지 않은 클래스이기 때문에 추상클래스로 객체를 만들 수 없고, 추상 클래스를 상속받아서 만든 클래스의 객체를 만들 수 있습니다. 상속받은 클래스(concrete class)에서는..
final final클래스와 final메소드가 있는데, final을 선언하면 최종 클래스(종단 클래스) 혹은 최종 메소드가 됩니다. 즉 더 이상 상속 혹은 재정의가 불가능해집니다. (변경 불가) 메소드가 final이면 서브클래스에서 오버라이딩이 불가능하고 클래스가 final이면 서브클래스를 만들 수 없습니다. public final class E{ public final String get(){ return "ㅎㅎ"; } }final 사용 장점 속도가 더 빨리집니다. 자식클래스가 사고치는 것을 막을 수 있어 보안이 강화됩니다. static과 final에 대한 포스팅 : https://onepinetwopine.tistory.com/480
재사용을 위해 상속 혹은 결합을 하는데, 상속에 대해 알아보겠습니다. 상속 상속이란 이미 존재하는 클래스로부터 멤버들을 물려받는 것입니다. 이 때 상속하는 클래스를 수퍼클래스 혹은 부모클래스, 상속받는 클래스를 서브클래스 혹은 자식클래스라고 합니다. 수퍼클래스(부모클래스, 베이스클래스)와 서브클래스(자식클래스, 파생된클래스 ) class Employee{ } class Manager extends Employee{ } 자바에서 상속은 extends키워드를 사용하여 상속시킬 수 있으며, 클래스 정의 옆에 작성해주면 됩니다. 1. 오버라이딩 메소드 재정의란 서브 클래스가 필요에 따라 상속된 메소드를 다시 정의하여 사용하는 것을 의미합니다. 같은 메소드 명을 가지고 있지만 상속받은 클래스에서는 다른 작업을 하..