@ 다형성 : is a 관계에서 생성된다.
현실에서 개라는 일반명사가 지나가던 한 강아지를 가르킬 수 있다.
종은 같되 그 각 개체는 각기 다른 특성을 가지고 있다.
각 클래스를 하나로 부를수 있는 기법.
@ javadoc 파일은 상대방에게 클래스 파일을 넘겨줄때 설명서를 만들어준다.
ex)javadoc 파일명.java
@추상클래스 : 추상클래스는 부모클래스가 자식에게 남겨준 빚과 같다. 자식은 반드시 이 물려준 추상메서드 몸체를 완성하여야 한다. 즉 재정의하여야한다.
//상속관계에서 부모클래스가 추상클래스일 경우:
//자식클래스는 반드시 추상메서드의 몸체를 완성하여야 한다.
//즉, 재정의 하여야 한다.(=Override)
//메서드에 몸체({} 브레이스)가 없다!!!
//몸체가 없는 추상적인 메서드 abstract임, public과 abstract의 순서 상관없음
//일반적인 메서드가 클래스내에 있어도 된다.
//몸체가 없는 추상적인 메서드 abstract임, public과 abstract의 순서 상관없음
@인터페이스 : 클래스는 아니면서 기능만을 가지고 있는놈. 전에 만들었던 놈이 변환되어 해당클래스에 부착시킨다. 인터페이스가 추상클래스 보다 더 추상적이다. 다중상속을 인터페이스를 이용해 구현한다. 인터페이스는 모두 추상메서드만을 가지므로 abstract수정자를 굳이 붙일 필요는 없다.
implements를 사용(extends 의 역활)
추상클래스와 인터페이스는 목적이 같다. 또한 같은 류로 만든다. is a 관계에서 같은 데이터 타입을 만들듯이 인터페이스도 같은 류로 만든다. 하지만 클래스의 다중상속은 불가능하기때문에 인터페이스를 추가하는 방식으로 한다.
@자바에서 지원하는 객체의 유형
1.클래스 -new연산자로 올린다.
2.추상클래스 - new연산자로 메모리에 올릴수 없다!!만들다가 말았으니깐 못 올린다.
구체화가 안되서 안올라감
자식에 의해 구체화되므로, 자식을 메모리에 올릴때 올라간다.
3.인터페이스 - 인터페이스를 구현한 객체에 의해 메모리에 올라간다.
공통점: 객체이다.
1) 따라서 객체라면 속성과 메서드가 있다.
2) 반드시 메모리에 올라와야 사용할 수 있다.
차이점: 메모리에 올리는 방법
//상속관계에서 부모클래스가 추상클래스일 경우:
//자식클래스는 반드시 추상메서드의 몸체를 완성하여야 한다.
//즉, 재정의 하여야 한다.(=Override)
//메서드에 몸체({} 브레이스)가 없다!!!
//몸체가 없는 추상적인 메서드 abstract임, public과 abstract의 순서 상관없음
//일반적인 메서드가 클래스내에 있어도 된다.
//몸체가 없는 추상적인 메서드 abstract임, public과 abstract의 순서 상관없음
@수정자의 종류
1.static - 멤버여부를 결정하는 수정자
2.abstract - 내용이 구체화되지 않는 대상에 붙이는 수정자(메서드, 클래스)
3.final -
1) 변수 - 변할 수 없도록 지정, 변수의 의미를 상실->상수가 되어버림
final int a=1;
a=4;(x 불가능)
2) 메서드 - 오버라이딩을 금지됨
3) 클래스 - 더이상 상속을 허용하지 않는다(라스트 모히칸. 마지막 남은애라 상속못함)