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

<Auto-Boxing, Auto-UnBoxing>

자료형이 int, boolean, byte, char 등... 이런 자료형을 갖는 변수들은 모두 스택영역에 저장된다. 일반 변수가 저장되고, 객체, 클래스들은 힙영역에 저장된다.

이렇게 별개로 구분하여 사용하는 이유는 메모리의 활용 때문인데, 이런 영역을 넘나들게 하는

Auto-Boxing와 Auto-UnBoxing이 있다.

실습을 통해 알아보자.

 

<실습>



-결과-




LIST

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

Java - Upcast, Downcast  (0) 2015.12.06
Java - String 클래스  (0) 2015.12.06
Java - Runtime 클래스  (0) 2015.12.06
Java - private 제어자  (0) 2015.12.06
Java - 생성자, 초기화블럭  (0) 2015.12.06

<Runtime 클래스>

java.lang 패키지의 Runtime 클래스는 자바에서 외부 프로세스를 생성하는 방법을 제공한다.
Runtime 클래스는 프로그램과 운영체제간의 상호 작용을 위한 메서드들이 정의되어있다.

프로그램이 실행이 되면 이미 Runtime클래스의 객체를 생성해서 거지고 있으며 이 객체의 주소 값을 얻어와서 사용하면 된다.

 

Runtime 클래스의 메소드들을 실습을 통해 알아보도록 하자.

<실습>




-결과-





LIST

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

Java - String 클래스  (0) 2015.12.06
Java - Auto-Boxing, Auto-UnBoxing  (0) 2015.12.06
Java - private 제어자  (0) 2015.12.06
Java - 생성자, 초기화블럭  (0) 2015.12.06
Java - 메소드 오버로딩(Method Overloading)  (0) 2015.12.06

private은 자바에서 변수를 다른 클래스로부터 보호할 때 사용한다.

private으로 변수를 지정해놓으면 다른 클래스는 해당 클래스의 private이 설정된 변수에는 직접 접근이 불가능하다. 그러므로 보안이 높아지는 장점이있다. 그렇다면 어떻게 접근해야할까?

변수를 직접 건드리는 것이 아니고, 함수를 사용해 간접적으로 접근해서 저장하거나 출력하는 것이다.

 

<실습>


-결과-




LIST

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

Java - Auto-Boxing, Auto-UnBoxing  (0) 2015.12.06
Java - Runtime 클래스  (0) 2015.12.06
Java - 생성자, 초기화블럭  (0) 2015.12.06
Java - 메소드 오버로딩(Method Overloading)  (0) 2015.12.06
Java - JVM의 메모리구조  (0) 2015.12.06

+ Recent posts