코딩

    자바 abstract

    클래스에 하나라도 abstract(추상)메소드가 있으면 클래스는 자동으로 추상 클래스가 된다. abstract라는 것이 상속을 강제하는 일종의 규제라고 생각하자. 즉 abstract 클래스나 메소드를 사용하기 위해서는 반드시 상속해서 사용하도록 강제하는 것이 abstract다. 추상 클래스는 상속을 강제하기 위한 것이다. 즉 부모 클래스에는 메소드의 시그니처만 정의해놓고 그 메소드의 실제 동작 방법은 이 메소드를 상속 받은 자식 클래스의 책임으로 위임하고 있다. + final abstract는 상속을 강제하도록 하는 규제면 final abstract와는 반대되는 의미 상속을 금지 한번 셋팅된 값 변경도 불가 오버라이딩 불가

    자바 접근제어자

    메소드가 키워드 private으로 시작되고 있다. private은 클래스A 밖에서는 접근 할 수 없다는 의미다. 바로 이 private의 자리에 오는 것들을 접근 제어자(access modifier)라고 한다. 그럼 사용할 수 없는 메소드를 왜 정의하고 있는 것일까? 내부적으로 사용하기 위해서다. 클래스A의 x는 접근제어자가 public이기 때문에 AccessDemo 클래스에서 접근이 가능하다. 여기서 알 수 있는 점이 있다 a.z()로 A클래스의 z메소드를 쓰려고 했을 땐 되지 않았는데 x메소드를 이용해 z메소드의 기능을 사용했다. 즉 private는 내부적으로만 사용이 가능하다는 뜻이다. proteced, default 같은클래스, 같은 패키지 접근 가능 그런데 상속 관계라면 proteced는 접근가..

    자바 상속

    Cal이라는 클래스의 자식을 만들려면 class Cal3 extends Cal{}로 생성하면 된다. 여기서 Cal3는 Cal의 부모라고 생각하면 되고 Cal에 있던 모든 것들을 상속받아 Cal과 같은 기능을 한다. 자식은 부모의 모든것을 상속받아 부모의 기능을 쓸 수 있음과 동시에 자식 자기자신만의 기능도 만들 수 있다. 오버로딩은 "과적"이란 의미 이미 있는 sum메소드를 같은 이름으로 만들 수 있다 단, 형태가 다를 때에 한에서 오버라이딩은 부모 클래스의 메소드를 덮어씀 재정의 부모 메소와 같은 이름의 메소드를 생성해 기능을 바꿔 부모와 다르게 활용이 가능하다 this 는 자기자신을 나타냄 super는 부모를 가르킨다. 자식이 생성자가 있는 부모 클래스를 상속받으려면 생성자도 함께 상속 받아야 한다.