4/21

전자인간·2022년 4월 21일
  1. 파일명명
    패키지명은 소문자로만 구성해서 만들고
    클래스명은 첫글자는 대문자.
    변수명은 소문자로시작하고 뒤에붙는 단어들은 대문자

  2. 문자열을 ~~.equal(null)할 수 없다. 이유는 아래 캡쳐를 보면 String은 value를 final로 받아주는데 final은 null값이 들어갈 수 없기때문에 조건 자체가 성립되지 않는다.

생성자는 최대한 경우의 수를 많이 만드는게 좋다.

setter랑getter 둘다 생성해 주는 편이 '보통' 좋다.

실체클래스는 붕어빵틀이면 추상클래스는 붕어빵틀의 구상도다.
실체클래스에는 new를 써서 실체들을 찍어낼 수 있지만 추상클래스는 new를 쓰는것이 금지되어있다.

추상메소드는 new를 못하게 하기위한 용도로도 쓸 수 있다.

추상클래스를 순수하게 상속의 재료로 쓰기위한 용도일 경우에는 new를 사용하지 않게 하는 경우이어서 딱히 바꿀 내용이 없을 것이다. 하지만 new를 써야하는 클래스의 상세부분이 미정의 된 상태여서 메소드네임이라도 구현해두고 싶은 경우가 있다면 우선 추상메소드로 정의해두고 나중에 제대로 정의 할 내용이 정해지면 해당 메소드와 클래스의 abstract를 지워주면 된다.
인터페이스는 추상메소드만 들어가야함. 안에 뭘 구현해봐야 구현도 안된다.
인터페이스에서 오버라이드 된 메소드들은 public을 해주어야 한다.이유는 여기 인터페이스에 있는 메소드들이나 필드들은 전부 어디든 접근할 수 있도록 public화가 자동으로 되는데
상속받는 얘들도 public으로 해줘서 형식을 똑같이 맞춰주어야 가능하다. 그냥 형식자를 맞춰준다 생각하자.
(public으로 써도 상관없는것이 서로다른 클래스가 같은 인터페이스에서 같은 메소드를 사용해도 1클래스의 인터페이스에서 상속받은 메소드는 1클래스.메소드이고 2클래스의 경우는 2클래스.메소드 이기때문에 상속하는 순간에 이미 구별이 되기에 public을 써도 문제될 일이 없다.)
인터페이스도

아래는 abstract 된 추상클래스는 new를 못만드는 예.

클래스에 추상메소드를 쓰려면 먼저 클래스를 추상클래스로 변경해 주어야한다. public class에서 public abstract class같은 형식으로 바꿔준다.
아래의 그림은 추상클래스 내에 추상메소드를 선언하는 경우인데, 바디를 적어주기만 해도 에러가 난다. 추상메소드는 아무 필드도 없이 인터페이스내의 메소드처럼 형식만 지정해 주어야한다.(바디는 test(){ } 중에 { }를 말함.)


그리고 위와같이 추상클래스내에 추상메소드를 선언해준 경우에는 하위상속클래스를 만들 경우, 그 클래스가 추상클래스라면 메소드를 오버라이드 해주지 않아도 되지만 그게 아니라면 메소드를 오버라이드를 해주어야한다. 그러지 않을 경우 에러가 생긴다.
인터페이스로부터 implement를 받은 클래스도 같다.
※추상메소드가 있는 클래스는 추상클래스로 해줘야한다고 위에 적어놓은것이 힌트.

  1. 상속,인터페이스의 예.


<참고> https://blog.naver.com/ggssgg1028/222706921807

현재 ASSET과 TASSET INTASSET은 추상클래스화 되어있다.
파란색은 상속, 빨간색은 인터페이스.
아래에서 위로 갈수록 상위클래스(부모)이다.
인터페이스의 추상메소드 '무게'를 TAsset에 오버라이드를 해주고 바디에 기능을 부여해 주었다. 그러면 TAsset에게 상속받은 Computer와 Book도 오버라이드 된 '무게'메소드를 쓸 수 있다.

0개의 댓글