자바공부하기 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

자바공부하기 77

 

NewStaticTest.java

 

class NewStaticTest

{

static void staticTest()

{

System.out.println("staticTest()");

}

void newTest()

{

System.out.println("newTest()");

}

public static void main(String[] args)

{

NewStaticTest.staticTest();

NewStaticTest nt = new NewStaicTest();

nt.newTest();

new NewStaticTest().newTest();

}

}

 

 

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

자바공부하기 79. 다형성이란?  (0) 2015.05.19
자바공부하기 78. 계산기 만들기  (0) 2015.05.18
자바공부하기 76. static  (0) 2015.05.14
자바공부하기 75. static  (0) 2015.05.12
자바공부하기 74. Static  (0) 2015.05.11

자바공부하기 76

 

static 멤버 메서드(클래스 메서드)

 

public class StaticMethodAccess {

private static int sint=100 ;

public int nint = 0 ;

public static void setStaticInt(int x){

sint = x ;

}

public static int getStaticInt(){

return sint;

}

public static void main(String[] args){

StaticMethodAccess.setStaticint(33333);

int s = StaticMethodAccess.getStaticInt();

System.out.println("static값은:" +s);

}

}

 

static 멤버 메서드도 객체생성이전에 접근이 가능

 

static 멤버 메서드에는 일반 멤버필드를 사용 할 수 없음(객체 생성 없이)

- 일반 멤버필드는 객체가 생성되면서 메모리를 할당 받음

- static 멤버 메서드는 객체와 연관 없이 사용 (어떤 객체와 연관될지 알 수 없음)

- 다라서 static 멤버 메서드에서는 일반 멤버필드를 사용할 수 없음

- 또한 일반 멤버 메서드도 사용할 수 없음

 

static 초기화 블록

 

 

- StaticTime 클래스명이 사용되는 순간 static블록이 실행

 

 

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

자바공부하기 78. 계산기 만들기  (0) 2015.05.18
자바공부하기 77. static  (0) 2015.05.14
자바공부하기 75. static  (0) 2015.05.12
자바공부하기 74. Static  (0) 2015.05.11
자바공부하기 73. Static  (0) 2015.05.11

자바공부하기 75

 

static

 

- 두 번째 루프

- StaticTest 생성자에서

> sint : 메소드영역 ( 계속 증가 )

> nint : 힙영역 참조

 

 

 

 

 

- 객체를 생성하지 않고 StaticAccess.sint로 값을 할당

> 객체생성여부와 상관없이 static메모리에 접근가능

> 그러나 인스턴스 변수의 경우 접근 불가능

  실체가 힙에 생기지 않았다.

 

- 사용방법

> 클래스이름.static변수이름 ex) StaticAccess.sint

 

 

 

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

자바공부하기 77. static  (0) 2015.05.14
자바공부하기 76. static  (0) 2015.05.14
자바공부하기 74. Static  (0) 2015.05.11
자바공부하기 73. Static  (0) 2015.05.11
자바공부하기 72. Static  (0) 2015.05.11

자바공부하기 74

 

Static

 

- 첫번째 루프

- StaticTest 생성자에서

*  sint : 메소드영역

* nint : 힙영역참조

 

 

 

 

- 두번째 루프

- StaticTest 생성자에서

* sint : 메소드 영역 ( 계속증가)

* nint : 힙영역참조

 

 

 

 

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

자바공부하기 76. static  (0) 2015.05.14
자바공부하기 75. static  (0) 2015.05.12
자바공부하기 73. Static  (0) 2015.05.11
자바공부하기 72. Static  (0) 2015.05.11
JAVA공부하기 71. JVM 메모리 모델  (0) 2015.05.11

+ Recent posts