분류 전체보기

    추상클래스와 인터페이스의 차이

    ( 2022.05.15 수정 - 내용 추가와 글 서식 변경 ) 자바8에서 람다에 대한 내용이 추가됨에 따라 인터페이스에서 메서드를 구현할수 있게되었습니다. 이전에는 추상클래스와 인터페이스의 주요 차이점은 구현과 상속이었습니다. 하지만 이제 구현까지 인터페이스에서 가능해짐에 따라 이 둘의 경계가 모호해졌습니다. 그렇다면 차이점은 무엇일까요? 인터페이스와 추상메서드의 공통점 dafult 키워드를 사용하면 인터페이스 안에서 필드 사용과 메서드를 구현할 수 있게 되었습니다. public interface HelloInterface { String text = "hello"; default void sayHello() { System.out.println(text); } } public class People i..

    Call by value

    함수 호출 시 매개변수로 전달받은 인자는 원본 데이터일까요? 우리 자바는 "원본 데이터가아닌 복사한 값을 전달받는 Call by value 방식"을 사용합니다. 예시를 통해 알아봅시다. public class CallByValue { public static void toZero(int data) { data = 0; } public static void main(String[] args) { int data = 100; System.out.println("호출 전 : " + data); //호출 전 : 100 toZero(data); System.out.println("호출 후 : " + data); //호출 후: 100 } } toZero() 메서드 내에서 원본 데이터를 변경하려 했지만 변경이 되지 ..

    생성자와 상속의 관계

    생성자는 객체 생성 시 자동으로 호출되는 메서드입니다. 하지만 생생자는 일반적인 메서드와는 달리 "상속이 불가능" 합니다. 이에 따라 상속받은 클래스는 생성자를 매번 "재정의" 해주어야 합니다. 그렇다면 여러분은 상속받은 클래스가 생성자를 재정의하는 것을 보신적이 있으신가요? 아마 많이 보지 못했을 겁니다. 부모 클래스의 생성자가 "매개변수가 없다면 자식 클래스의 생성자는 생략이 가능" 하기 때문이죠. public class Parent { //부모 생성자 public Parent() { System.out.println("constructor"); } } public class Me extends Parent{ public void say() { System.out.println("hello"); } ..