객체지향

· 객체지향
인터페이스의 장점 - 두 대상(객체)간의 연결, 대화, 소통을 돕는 중간 역할을 한다. (ex윈도우) - 선언과 구현을 분리 (변경에 유리한 유연한 설계) - 개발시간을 단축한다. - 표준화가 가능하다. (JDBC) - 서로 관계없는 클래스들을 관계를 맺어줄 수 있다. 클래스 B 를 인터페이스 사용해서 나타내기 class B { public void method() { System.out.println("methodB"); } } interface I { public void method(); } 위의 코드를 보면 메서드를 멤버로 받는 새로운 인터페이스를 선언한다. 추상메서드로 만들어 선언부(껍데기)만 떼어낸다. class B inplements I { public void method() { Syste..
· 객체지향
참조변수의 형변환 ▶ 조상 자손관계의 참조변수는 서로 형변환 가능 class Car {} class FireEngine extends Car { } class Ambulance extends Car { } FireEngine , Ambulance 가 있는데 둘다 car의 자손이다. 아래의 그림으로 보면 이러한 상속관계를 볼 수 있다. 형변환의 특성으로 조상 자손 관계의 참조변수는 서로 형변환이 가능하다. 그렇기 때문에 Car 클래스의 자손들은 조상 자손 관계가 충족되기 때문에 형변환이 가능하다, 하지만 형제들끼리는 형변환이 가능하지 않다. class Car { String color; int door; void drive(){ //운전하는 기능 System.out.println("drive~"); } v..
· 객체지향
다형성(polymorphism) ▶ 여러 형태를 가지는 특성 ▶ 조상타입 참조변수로 자손타입 인스턴스를 다루는 것 class Tv{ boolean power; int channel; void power() {power =!power;} void channelUp() {++channel; } void channelDown() { --channel;} } class SmartTv extends Tv{ String text; void caption() {//내용생략} } 위의 코드를 보면 타입이 일치하고 있는 것을 볼 수 있다. 다형성을 배우기 전까지는 이러한 형태로 타입을 일치시켜서 사용을 하였다. 다형성은 이러한 타입이 불일치시키는 것을 말한다. 아래의 코드를 보면 타입이 불일치하는 것을 볼 수있다. 쉽게..
· 객체지향
제어자(modifier) 클래스와 클래스의 멤버(멤버 변수, 메서드) 에 부가적인 의미 부여 ▶ 접근제어자 : public, protected, (default), private ▶ 그 외 : static, final, abstract, native, transient, synchronized main() 메서드를 가지지 않는 대부분의 클래스는 외부 클래스에서 이용할 목적으로 설계된 라이브러리 클래스이다. 라이브러리 클래스를 설계할 때에는 외부 클래스에서 접근할 수 있는 멤버와 접근할 수 없는 멤버로 구분해서 필드, 생성자, 메서드를 설계한다. 객체 생성을 막기 위해 생성자를 호출하지 못하게 하거나 객체의 특정 데이터를 보호하기 위해 해당 필드에 접근하지 못하도록 막아야 한다. 또한 특정 메서드를 호출할..
· 객체지향
참조변수 super - 객체 자신을 가리키는 참조변수. 인스턴스 메서드(생성자)내에만 존재 - 조상의 멤버를 자신의 멤버와 구별할 때 사용 ex1) Parent 클래스와 child클래스가 생성되어있다. child클래스는 상위클래스인 Parent 를 상속받고 있으며 각 클래스에는 int x 변수가 들어있다. c.method() 메서드를 호출하면 참조변수 c가 가르키는 child 객체가 생성된다. 이름이 겹칠 때에는 조상의 멤버에는 Super. , 자신의 멤버에는 this.을 사용하여 구별한다. 결과 x = 20 this.x = 20 super.x = 20 ex2) ex1과 비슷하지만 상위클래스인 Parent2에만 int x 변수가 있다. x가 상위클래스에 하나밖에 없기 때문에 Super.x 와 this.x..
· 객체지향
메서드 오버라이딩(Overriding) - 상속받은 조상의 메서드를 자신에 맞게 변경하는 것 class Point{ int x; int y; String getLocation() { return "x:" + x + ",y:" + y; } } class Point3D extends Point { int z; String getLocation() { //오버라이딩 return "x:" + x + ",y:" + y + ",z:" + z; } } 오버라이딩 메서드를 선언할 때 주의할점은 선언부는 그대로 써야한다. 변경이 불가능하며 내용만 변경을 한다. 오버라이딩의 조건 1. 선언부가 조상클래스의 메서드와 일치해야한다. 2. 접근제어자를 조상 클래스의 메서드보다 좁은 범위로 변경할 수 없다. 3. 예외는 조상 클..
· 객체지향
단일상속 java는 단일상속만 허용한다. (C++ 은 다중상속 허용) class TvDVD extends Tv, DVD { //에러 조상은 하나만 허용된다. } Tv와 DVD 의 메서드가 void power() 로 같고 내용이 다르다고 할 때 TvDVD가 상속받을 때 충돌이 일어난다. 그래서 자바는 다중상속을 하지않고 단일 상속으로 사용이 가능하다. 인터페이스를 이용하면 이러한 충돌문제를 해결하며 다중상속 효과를 낼 수 있게 한다. 인터페이스를 사용하지 않고 다중상속을 작성하는 방법 ▶ 비중이 높은 클래스 하나만 상속관계로, 나머지는 포함 관계로 한다. TvDVD 클래스는 Tv를 상속한다. DVD 클래스는 객체를 생성하고 메서드 선언을 하여 사용을 하게 한다. 이렇게 하면 다중상속과 같은 효과를 나타낼 ..
· 객체지향
포함관계 ▶ 포함(composite)이란? - 클래스의 멤버로 참조변수를 선언하는 것 - 작은 단위로 클래스를 만들고 이것을 조합해서 클래스를 만듬 [ Circle 클래스가 Point를 포함하는 관계 ] 클래스의 멤버로 참조변수. 다른 클래스타입의 변수를 선언하고 그 타입의 객체를 만들어준다. 클래스 간의 관계 결정 ▶ 상속관계 ~은 ~이다 (is - a) ▶ 포함관계 ~은 ~을 가지고 있다. (has-a) 1. (포함) 2. (상속) class Point { int x; int y; } 메모리구조
-JUNHEOK-
'객체지향' 카테고리의 글 목록