본문 바로가기

다형성 자바를 하면서 가장 중요한 개념중에 하나가 다형성이다.다형성이란 부모클래스의 변수로 여러개의 하위클래스의 객체를 가지는 것을 말한다. 다형성의 장점으로는 확장성과 재사용성이고 하나의 클래스로 여러개의 하위클래스를 관리할수 있어 유동적이고 유지보수가 좋다.이러한 다형성을 쓰기위해서는 몇가지 규칙이 있다. 1. 부모클래스의 변수에 하위클래스의 객체를 가지면 부모클래스의 메소드만 사용이 가능하다.이러한 이유는 부모클래스의 메소드 개수에 있다. 자식클래스의 메소드가 부모클레스에 없는 경우 이것을 사용한다고 생각해보자. 물론 부모클래스에는 없는 메소드이니 당연히 에러가 난다. 이것을 막기위해 자식클래스를 객체로 가지는 부모클래스의 변수는 자식의 메소드를 사용할 수 없게 되어있다. 2. 메소드를 오버라이딩하면 자식.. 더보기
추상클래스(abstract), 인터페이스(interface) 추상클래스는 말그대로 추상적인 클래스이다. 클래스의 객체를 생성하지 못하게 하면서 오버라이딩을 이용할때나 작업레벨을 분할할때 (대상의 범주를 잡아줄때 사용한다고 생각하면 된다.) abstract class 클래스명{}으로 표현되며 추상메소드와 일반맴버변수, 일반 메소드로 구성이 된다. 객체 생성이 불가능 하기 때문에 다른 클래스에 상속이 되어 사용되어 진다. 객체 생성이 불가능한 이유는 불완전한 추상메소드를 포함하기 때문이다. 객체 생성이 불가능하지만 생성자까지 생성하는것이 불가능하지는 않다.인터페이스는 interface 인터페이스명{}으로 선언되며 추상메소드와 public static final로 표현된 맴버변수밖에 올 수가 없다.인터페이스를 사용하는 이유는 공동작업에 대한 내용이 있을 때 사용되어 진.. 더보기
final Java에서 final이란 예약어가 있다. 이건 영어로 해석해보면 최종의, 최후의 란 뜻으로 말그대로 클래스에 쓰이면 상속을 불가능하게 하고 메소드에 쓰이면 메소드의 오버라이딩을 막고 변수에 쓰이면 변수의 값을 변경하지 못하는(상수) 녀석으로 만든다.final 클래스를 사용하는 이유는 최종적으로 클래스를 만들고 하위클래스를 만들지 않을 때 사용한다. 생각해보면 어떤 클래스를 만들고 나서 배포를 했는데 제 3자가 이것을 확장하여 사용할수도 있다. final클래스를 쓴다는 것은 보안과 은닉성을 높여주는 역할을 한다.(예를 들면 System클래스나 String클래스같은 중요 클래스들도 API를 확인해보면 final로 선언되어있다.). final 처리가 된 class는 안쪽의 메소드들도 전부 final처리가 된.. 더보기