<추상클래스>

추상클래스는 미완성 설계도에 비유할 수 있다. 추상클래스는 상속을 통해서 자손클래스에 의해서만 완성될 수 있고, 추상클래스 자체로는 클래스로서의 역할을 못한다. 추상클래스 안의 메소드와 내용들은 모두 재사용 되어야만 한다.

추상 클래스는 추상메소드를 포함하고 있다는 것을 제외하고는 일반 클래스와 차이가 없다.

그렇다면 여기서 추상메소드는 무엇일까?

메소드는 선언부와 구현부로 나뉜다. 추상메소드는 구현부는 생략하고 선언부만 작성해 놓을 것을 말한다.

abstract라는 키워드를 사용해서 추상 클래스와 추상 메소드를 만든다.

 

<실습>

 

-결과-

 

LIST

<Static>

Static은 클래스의 공통적인이라는 의미를 갖고있다. 인스턴스 변수는 하나의 클래스로부터 생성되었더라도 각기 다른 값을 유지한다. 하지만 Static 변수 즉, 클래스 변수는 모든 인스턴스가 공유하기 때문에 갖은 값을 갖는다.

Static이 붙은 변수, 메소드 들은 인스턴스를 생성하지 않고도 사용할 수 있다.

예)

 

 

<실습>

 

-결과-

 

 

 

<final>

final은 변경될 수 없는 변수의 의미를 갖고 있다. 변수에 사용되면 값을 변경할 수 없는 상수가 되며, 메소드에 사용하면 오버라이딩을 할 수 없게 된다. 마지막으로 클래스에 사용하게 되면 상속 관계일때 자손클래스를 정의하지 못하게 한다.(상속이 성립 안됨, 확장될 수 없는 클래스)

 

 

LIST

<Calendar 클래스>

 -결과-

 

 

<실습 - 심화>

 

-결과-

 

LIST

String도 클래스이기 때문에 String의 조상클래스도 Object 클래스이다. String 클래스는 내부적으로 Object클래스의 메소드들을 오버라이딩 해놓았는데 몇 가지 알아보자.

 

<실습>

재정의된 String클래스의 메소드인 equals를 알아보자.

 

 

-결과-

 

LIST

'Programming > Java' 카테고리의 다른 글

Java - 제어자(static, final)  (0) 2015.12.07
Java - Calendar 클래스  (0) 2015.12.07
Java - Call by Value, Call by Reference  (0) 2015.12.07
Java - 오버라이딩(Overriding)  (0) 2015.12.07
Java - Object 클래스  (0) 2015.12.06

<Call by Value, Call by Reference>

Call by Value는 말 그대로 값을 반환하는 것이다.

Stack영역에서 Heap영역으로 데이터 자체가 넘어가는 것이다.

 

Call by Reference는 말 그대로 값을 넘길때 값이 아닌 주소를 넘긴다는 의미이다.

 

<실습>

 

 

-결과-

 

LIST

<오버라이딩>

오버라이딩이란 조상클래스로부터 상속받은 메소드의 내용을 변경하는 것을 말한다.

상속받은 메소드를 그대로 사용하기도 하고 이처럼 자기 입맛대로 재정의하여 사용하기도 한다.

오버라이딩의 조건은 메소드의 내용만을 새로 작성하는 것이므로 메소드의 선언부는 조상의 것과는 완전히 일치해야 한다.

1. 이름이 같아야 한다.

2. 매개변수가 같아야 한다.(이름이 같고 매개변수가 다르면 오버로딩이 된다...)

3. 리턴 타입이 같아야 한다.

 

<실습>

 

-결과-

 

 

 

 

 

 

 

 

LIST

<Object 클래스>

Object클래스는 모든 클래스 상속계층도의 제일 위에 위치하는 조상클래스이다.

모든 클래스들은 자동적으로 Object 클래스로부터 상속받게 된다.

예)

class Tc extends Object {

// 내용

}

이렇게 되는 것이다. (Object클래스는 extends 생략이 가능하다)

만약 다른 클래스로부터 상속을 받는다고 하더라도 상속계층도를 따라 조상 클래스, 조상클래스의 조상클래스를 찾아 올라가다보면 결국 마지막 최상위 조상은 Object클래스일 것이다.

자바의 모든 클래스들은 Object클래스의 멤버들을 상속 받기 때문에 Object클래스에 정의된 멤버들을 사용할 수 있다.

다음 실습을 통해 Object클래스에 있는 자주 사용하는 메소드들에 대해 알아보자.

<실습>

SuperC라는 클래스는 Object클래스로 부터 상속받고 있다.

SuperC라는 클래스에 equals, toString이라는 메소드를 선언 혹은 정의하지 않았는데도 불구하고 main함수 안에서 SuperC의 객체를 생성해 사용할 수 있는 이유는Object클래스의 멤버변수 이기 때문이다.



-결과-


LIST

'Programming > Java' 카테고리의 다른 글

Java - Call by Value, Call by Reference  (0) 2015.12.07
Java - 오버라이딩(Overriding)  (0) 2015.12.07
Java - 상속(자식클래스, 부모클래스의 관계)  (0) 2015.12.06
Java - Upcast, Downcast  (0) 2015.12.06
Java - String 클래스  (0) 2015.12.06

<상속>


상속은 기존의 클래스를 재사용하여 새로운 클래스를 작성하는 것이다. 상속을 왜하는 것일까? 재사용성을 높이고, 코드의 중복성을 제거하여 생산성과 유지보수에 향상되기 때문이다.
상속은 예를 들어 새로 작성하려는 클래스의 이름이 Child라 하자, 기존에 있는 클래스의 이름을 Parent라 하자. 이때 문법은 extends를 사용하여...
class Child extends Parent {
// 내용
}
이렇게 하면 된다. 이렇게 되면 Parent의 메소드나, 인스턴스 변수를 Child 클래스가 사용할 수 있고, 오버라이딩을 하여 재사용 할 수도 있다.
하지만, 생성자와 초기화 블럭은 상속되지 않고, 멤버만 상속된다.
상속 해주는 클래스를 부모클래스, 상위클래스 라고 부르고, 상속 받는 클래스를 자손 클래스, 하위 클래스라고 한다. 
 
<실습>




위의 실습을 해석해보면, Super클래스가 부모 클래스이고, Sub가 자손클래스이다. 이렇게 코드를 짜면 자식 클래스의 객체를 생성하면 그 객체의 인스턴스 변수들 int b, c, 메소드 write(), print1(), print2()를 사용할 뿐만 아니라 부모 클래스의 인스턴스 변수들 int a, b, 메소드 write()를 사용할 수 있다.
어라? 부모클래스와 자손 클래스와 같은 이름을 가진 변수가 있다. (메소드는 오버라이딩 해서 재정의하여 사용 가능기 때문에 전혀 문제가 되지 않는다.)
그렇다면 이럴때 자손 클래스의 객체를 생성했을 때 위에서 겹치는 변수는 b이다. b의 변수는 누구것을 사용할 것인가? 당연히 무조건 자손 클래스의 b를 사용한다. (단, super로 난 부모클래스의 b를 사용하겠어요 라고 지정해 주지 않는 이상 말이다)

 

-결과-



<실습>



-결과-


LIST

'Programming > Java' 카테고리의 다른 글

Java - 오버라이딩(Overriding)  (0) 2015.12.07
Java - Object 클래스  (0) 2015.12.06
Java - Upcast, Downcast  (0) 2015.12.06
Java - String 클래스  (0) 2015.12.06
Java - Auto-Boxing, Auto-UnBoxing  (0) 2015.12.06

<Upcast, Downcast>



-결과-


LIST

'Programming > Java' 카테고리의 다른 글

Java - Object 클래스  (0) 2015.12.06
Java - 상속(자식클래스, 부모클래스의 관계)  (0) 2015.12.06
Java - String 클래스  (0) 2015.12.06
Java - Auto-Boxing, Auto-UnBoxing  (0) 2015.12.06
Java - Runtime 클래스  (0) 2015.12.06

<String 클래스>

String클래스의 메소드들과 각 메소드들이 어떤 일을 하는지 알아보자.

밑의 실습에서 사용한 string클래스의 메소드들은 자주 사용하는 메소드들을 정리하여 예로 만들어보았다.

 

[메소드]

length() : 문자열의 크기(문자열 내에 있는 문자들의 수)를 반환

charAt(index) : 문자열 내에 (index + 1) 번째 위치에 있는 문자를 반환한다.

substring(Startindex) : 문자열 내에 (Startindex + 1) 번째 위치에 있는 문자부터 끝 문자까지의 부분문자열을 반환한다.

substring(startindex, Endindex) : 문자열 내에 (Startindex + 1)번째 위치부터 (Endindex + 1)번째 위치까지의 문자열을 반환한다.

<실습>



-결과-




LIST

'Programming > Java' 카테고리의 다른 글

Java - 상속(자식클래스, 부모클래스의 관계)  (0) 2015.12.06
Java - Upcast, Downcast  (0) 2015.12.06
Java - Auto-Boxing, Auto-UnBoxing  (0) 2015.12.06
Java - Runtime 클래스  (0) 2015.12.06
Java - private 제어자  (0) 2015.12.06

+ Recent posts