Android/JAVA 기본문법 6

객체 지향에 대한 기본적 개념 && 무 편집본.

1.1 객체지향언어의 역사 요즘은 컴퓨터의 눈부신 발전으로 활용 폭이 넓고 다양해져서 컴퓨터가 사용되지 않는 분야가 없을 정도지만, 초창기에는 주로 과학실험이나 미사일 발사실험과 같은 모의실험(Simulation)을 목적으로 사용되었다. 이 시절의 과학자들은 모의실험을 위해 실제 세계와 유사한 가상 세계를 컴퓨터 속에 구현하고자 노력하였으며, 이러한 노력은 객체지향이론을 탄생시켰다. 객체지향이론의 기본 개념은 '실제 세계는 사물(객체)로 이루어져 있으며, 발생하는 모든 사건들은 사물간의 상호작용이다.'라는 것이다. 실제 사물의 속성과 기능을 분석한 다음, 데이터(변수)와 함수로 정의함으로써 실제 세계를 컴퓨터 속에 옮겨 놓은 듯한 가상세계를 구현하고 이 가상세계에서 모의실험을 함으로써 많은 시간과 비용을..

접근 제어자.

Static - 클래스의, 공통적인 static은 '클래스의' 또는 '공통적인'의 의미를 가지고 있다. 인스턴스변수는 하나의 클래스로부터 생성되었다 하더라도 각각 다른 값을 유지하지만, 클래스변수(static멤버변수)는 인스턴스에 관계없이 같은 값을 갖는다. 그 이유는 단 하나의 변수를 모든 인스턴스가 공유하기 때문이다. 그리고, static이 붙은 멤버변수와 메서드, 그리고 초기화블럭은 인스턴스가 아닌 클래스에 관계된 것이기 때문에 인스턴스를 생성하지 않고도 사용할 수 있다. 인스턴스메서드와 static메서드의 근본적인 차이는 메서드 내에서 인스턴스 멤버를 사용하는가의 여부에 있다. static이 사용될 수 있는 곳 - 멤버변수, 메서드, 초기화블럭 final - 마지막의, 변경될 수 없는 final은..

오버라이딩

2.1 오버라이딩이란? 조상클래스로부터 상속받은 메서드의 내용을 변경하는 것을 오버라이딩이라고 한다. 상속받은 메서드를 그대로 사용하기도 하지만, 자손클래스 자신에 맞게 변경해야하는 경우가 많다. 이럴 때 조상의 메서드를 오버라이딩한다. [참고]override의 사전적 의미는 '~위에 덮어쓰다(overwrite).' 또는 '~에 우선하다.'이다. 2차원 좌표계의 한 점을 표현하기 위한 Point클래스가 있을 때, 이를 조상으로 하는 Point3D클래스, 3차원 좌표계의 한 점을 표현하기 위한 클래스를 다음과 같이 새로 작성하였다고 하자. class Point { int x; int y; String getLocation() { return "x :" + x + ", y :"+ y; } } class Po..

클래스와 인스턴스의 초기화 블록

[예제6-20] BlockTest.java class BlockTest { // 클래스 초기화 블럭 static { System.out.println("static { }"); } // 인스턴스 초기화 블럭 { System.out.println("{ }"); } // 생성자 public BlockTest() { System.out.println("생성자"); } public static void main(String args[]) { System.out.println("BlockTest bt = new BlockTest(); "); BlockTest bt = new BlockTest(); System.out.println("BlockTest bt2 = new BlockTest(); "); BlockTes..

생성자.

5.1 생성자란 생성자는 인스턴스가 생성될 때 호출되는 '인스턴스 초기화 메서드'이다. 따라서 인스턴스변수의 초기화 작업에 주로 사용되며, 인스턴스 생성 시에 실행되어야 할 작업을 위해서도 사용된다. [참고]인스턴스 초기화란, 인스턴스변수들을 초기화하는 것을 뜻한다. 생성자 역시 매서드처럼 클래스 내에 선언되며, 구조도 메서드와 유사하지만 리턴값이 없다는 점이 다르다. 그렇다고 해서 생성자 앞에 리턴값이 없음을 뜻하는 키워드 void를 사용하지는 않고, 단지 아무 것도 적지 않는다. 생성자의 조건은 다음과 같다. 1. 생성자의 이름은 클래스의 이름과 같아야 한다. 2. 생성자는 리턴 값이 없다. [참고]생성자도 오버로딩이 가능하므로 하나의 클래스에 여러 개의 생성자가 있을 수 있다. 생성자는 다음과 같이..

객체지향 클래스 && 매서드 오버로딩

이것은 기본적인 클래스를 나타낸 것이다. class Tv { // Tv의 속성(멤버변수) String color; // 색상 boolean power; // 전원상태(on/off) int channel; // 채널 // Tv의 기능(메서드) void power() { power = !power; } /* TV를 켜거나 끄는 기능을 하는 메서드 */ void channelUp() { ++channel; } /* TV의 채널을 높이는 기능을 하는 메서드 */ void channelDown() { --channel; } /* TV의 채널을 낮추는 기능을 하는 메서드 */ } class TvTest { public static void main(String args[]) { Tv t; // Tv인스턴스를 참조하..