JAVA공부하기 85

변수 및 메서드의 접근제어

 

접근 지정자로의 접근 제어

 

상속 가능한 상위클래스 멤버

- public 또는 protected 접근 지정자로 선언된 변수와 메소드

- 같은 패키지 내의 상위클래스에 있는 접근 지정자가 생략되어있는 변수와 메소드 (default)

 

상속 불가능한 상위 클래스 멤버

- 상위클래스와 하위 클래스에 같은 이름의 변수나 메소드가 있는경우

- 메소드 이름이 같은 경우는 재정의

- private 접근 지정자로 선언된 변수와 메소드

 

 

 

// 서브 클래스의 변수와 슈퍼 클래스의 변수 이름이 같을 때

 

자바공부하기 84

 

클래스 상속 선언의 형식

 

 

 

- 클래스 class_name이 클래스

 

super_class_name을 상속받음 정의

: 상위 클래스는 하위 클래스가 가질 수 있는 일반적인 상태와 행동을 정의

: 하위 클래스는 하위 클래스만이 갖는 특별한 상태와 행동을 정의

 

 

class Super1 {public int x=1;}

class Super2 extends Super1 {public int y=2;}

class Super3 extends Super2 {public int z=3;}

class InTest

{

public static void main(String[] a)

{

Super1 S1 = new Super1();

Super2 S2 = new Super2();

Super3 S3 = new Super3();

System.out.println("s1의 변수:"+s1.x);

System.out.println("s2의 변수:"+s2.x+"  "+s2.y);

System.out.println("s3의 변수:"+s3.x+"  "+s3.y+ "   " +s3.z);

}

}

 

 

 

 

 

자바공부하기 83.

클래스의 계층구조

 

- 상속으로 인한 클래스의 계층 구조

: 자바의 모든 클래스는 슈퍼 클래스(super class)를 가진다.

: 계층 구조의 위에 위치하는 클래스

* 상위 클래스(super class, parent class)

: 상위클래스를 상속받는 클래스

* 하위 클래스(sub class, childclass)또는 파생클래스(derived class)

 

- 자바에서 최상위 슈퍼 클래스는 java.lang.Object

 

- 명시적으로 지정하지 않으면 모든 클래스는 Object 클래스의 서브 클래스

 

- 자바에서 모든 클래스는 하나이상의 하위 클래스를 가질 수 있으나, 상위 클래스는 하나만을 가질 수 있음.

: 단, final클래스는 하위 클래스를 가지지 못함

 

- 중복 상속 불가

: 단, Interface를 이용한 중복 구현은 가능

 

 

 

자바공부하기 82

상속의 개요

 

- 상속은 객체지향언어의 특성 중에 가장 중요한 개념

: 모듈의 재사용(reuse)과 코드의 간결성을 지원함

: 클래스를 이용하여 다른 클래스를 생성 또는 정의할 수 있음

 

- ex) 자동차가 갖는 일반적인 상태와 행동들을 자동차 클래스로 정의

: 이 자동차 클래스를 확장하여 버스만이 갖는 상태와 행동을 추가하여 새롭게 버스 클래스를 정의

: 크럭만이 갖는 상태와 행동을 추가하여 트럭 클래스, 자가용만이 갖는 상태와 행동을 추가하여 자가용 클래스를 정의할 수 있음

: 자동차 클래스 상위 클래스(super class)

: 버스, 트럭, 자가용 클래스 등은 하위 클래스(sub class)

 

 

자바공부하기 81.

 

overloading vs overriding

 

overloading

- 동일한 클래스 내에서 같은 이름의 메소드를 중복 정의하여 다형성을 지원

- 메서드 이름은 동일하나 매개변수의 형이나 매개변수의 수가 다를 것

 

overriding

- 상속 관계에 있는 클래스간에 메소드를 중복 정의하여 다형성을 지원

- 즉, 메소드 오버라이딩을 이용하면 하위 클래스에서 동일 이름의 메소드를 새롭게 정의 가능

- 매개변수의 형이나 매개변수의 수 모두 동일해야함

 

 

 

메서드의 재정의와 다중 정의를 사용한 예

 

calss A {

...

int m1(int i) {...}

int m2(float f) {...}

...

}

 

class B extends A {

...

int m1(int i) {...}

int m2(float f1, float f2) {...}

int m3() {...}

...

}

 


 

 

 

 

 

자바공부하기 80

 

overriding

 

상위클래스의 일부 메서드가 하위 클래스에 적합하지 않을 경우

: 하위 클래스에서 해당 메서드만 재정의

- 나머지 부분도 재사용될 수 있도록 해줌

 

꼭 필요한 메서드에 대해 그 프로토타입 만을 추상메서드로 정의

: 이를 상속하는 클래스에서 메서드 재정의

 

재사용 가능한 강력한 인터페이스 구축

: 메서드 오버라이딩되면 Super 클래스의 메서드가 가려짐

: 이럴경우 super를 사용하면 Super클래스의 메서드를 사용

 

overriding(메서드 재정의)시 규약

: 인스턴스 메서드일 것

- 즉, static으로 선언되어있지 않아야함

: 메서드의 이름이 일치 할 것

: 매개변수의 개수가 일치할 것

: 매개변수 각각의 자료 형이 일치할 것

: 메서드의 리턴 형이 일치할 것

: 메서드의 접근 제어자가 public 또는 protected일 것

- protected: 하위 클래스에서 호출하거나, 오버라이드 할 수 있는 접근제어자. 하위 클래스가 아닌 다른 클래스는 호출하지 못한다.

- private일 경우 재정의 할 수 있다.

 

 

자바공부하기 79

 

다형성(polymorphism)이란 ?

 


- 다양한 형태의 성질

 

- 다형성의 개념이 적용되는 곳

: 상속(Inheritance)

: 중복정의(Overloading)

: 재정의(Overriding)

: UPcasting

: Abstract의 상속과 Interface의 구현

 

- 동적 메소드 바인딩에 기반

: 동적 메소드 바인딩에는 어떤 메소드를 호출할 지 컴파일 시 지정하지 않고 실행시에 동적으로 결정된다.

: 코드에는 호출할 주소가 아닌, 어떤 메소드를 호출해야 하는지 전체 이름이 적혀있다.

: JVM은 이걸보고 객체 계층을 뒤져 적절한 메소드를 호출한다.

: 그러므로 어느 객체의 어느 메소드가 호출될 지 컴파일 시에는 알 수 없다.

: 컴파일러는 컴파일 시 단지 타입 정보에만 의존하여 에러 체킹을 한다.

 

 

 

자바공부하기78.

계산기 만들기

 

 

 

 

 

 

** 계산기 만드는 간단한 예제입니다.

다들 예제를 통해서 한번 만들어 보세요 ^-^

 

자바공부 파이팅!!

'자바 > JAVA...Spring' 카테고리의 다른 글

자바공부하기 81. overloading vs overriding  (0) 2015.05.19
자바공부하기 79. 다형성이란?  (0) 2015.05.19
자바공부하기 77. static  (0) 2015.05.14
자바공부하기 76. static  (0) 2015.05.14
자바공부하기 75. static  (0) 2015.05.12

+ Recent posts