목록분류 전체보기 (44)
Goru
참조변수가 참조하고 있는 인스턴스의 실제 타입을 알아보기 위해 instanceof 연산자를 사용한다. 주로 조건문에 사용되며, instanceof의 왼쪽에는 참조변수를 오른쪽에는 타입이 피연산자로 위치한다. 그리고 연산의 결과로 boolean값인 true와 false 중의 하나를 반환한다. public class InstanceofTest { public static void main(String[] args) { FireEngine fe = new FireEngine(); if(fe instanceof FireEngine) { System.out.println("This is a FireEngine instance"); } if(fe instanceof Car) { System.out.println("..
다형성이란? 객체지향개념에서 다형성이란 '여러 가지 형태를 가질 수 있는 능력'을 의미하며, 자바에서는 한 타입의 참조변수로 여러 타입의 객체를 참조할 수 있도록 함으로써 다형성을 프로그램적으로 구현하였다. class Tv{ boolean power;//전원상태 (on/off) int channel;//채널 void power(){power = !power; } void channelUp{ ++ channel;} void channelDown{ -- channel;} } class CaptionTv extends Tv{ String text;//캡션을 보여 주기 위한 문자열 void caption()//{/*내용생략*/} } 조상타입의 참조변수로 자손타입의 인스턴스를 참조할 수 있다. 반대로 자손타입의 ..
제어자란? 제어자는 클래스, 변수 또는 메서의 선언부에 함께 사용되어 부가적인 의미를 부여한다. 제어자의 종류는 크게 접근 제어자와 그 외의 제어자로 나눌 수 있다. 접근 제어자 public, protected, default, private 그 외 static, final, abstract, native, transient, synchronized, volatile, strictfp 제어자는 클래스나 멤버변수와 메서드에 주로 사용되며, 하나의 대상에 대해서 여러 제어자를 조합하여 사용하는 것이 가능하다. 단, 접근 제어자는 한 번에 네 가지 중 하나만 선택해서 사용할 수 있다. static - 클래스의, 공통적인 static은 '클래스의' 또는 '공통적인'의 의미를 가지고 있다. 클래스변수(static..
package 패키지란, 클래스의 묶음이다. 패키지에는 클래스 또는 인터페이스를 포함시킬 수 있으며, 서로 관련된 클래스들 끼리 그룹 단위로 묶어 놓음으로써 클래스를 효율적으로 관리할 수 있다. - 하나의 소스파일에는 첫 번쨰 문장으로 단 한 번의 패키지 선언만을 허용한다. - 모든 클래스는 반드시 하나의 패키지에 속해야 한다. - 패키지는 점(.)을 구분자로 하여 계층구조로 구성할 수 있다. - 패키지는 물리적으로 클래스 파일(.class)을 포함하는 하나의 디렉토리다. 패키지의 선언 package 패키지명; import문 import문의 역할은 컴파일러에게 소스파일에 사용된 클래스의 패키지에 대한 정보를 제공하는 것이다. import 문의 선언 모든 소스파일(.java)에서 import문은 packa..
오버라이딩이란? 조상 클래스로부터 상속은 서드의 내용을 변경하는 것을 오버라이딩이라고 한다. class Point{ int x; int y; String getLocation(){ return " x : " + x + ", y: "+y; } } class Point3D extends point{ int z; String getLocation() {//오버라이딩 return " x : " + x +", y:"+y+",z:"+z; } } 오버라이딩의 조건 자손 클래스에서 오버라이딩하는 메서드는 조상 클래스의 메서드와 - 이름이 같아야 한다. - 매개변수가 같아야 한다. - 반환타입이 같아야 한다. ※ 선언부가 서로 일치해야 한다 1. 접근 제어자는 조상클래스의 메서드보다 좁은 범위로 변경할 수 없다. 2. ..
상속이외에도 클래스를 재사용하는 또 다른 방법이 있는데, 그것은 클래스간에 포함관계를 맺어 주는 것이다. 클래스 간의 포함관계를 맺어 주는 것은 한 클래스의 멤버변수로 다른 클래스 타입의 참조 변수를 선언하는 것을 뜻한다. ♠ 원을 표현하기 위한 Circle이라는 클래스를 작성 class Circle{ int x;//원점의 x 좌표 int y; //원점의 y 좌표 int r;// 반지름 } // 좌표상의 한 점을 다루기 위한 Point 클래스 class Point{ int x; //x좌표 int y; //y좌표 } //Point 클래스를 재사용해서 Circle 클래스를 작성한다면 다음과 같이 할 수 있다. class Circle{ int x; int y; int r; } class Circle{ Poin..

상속 상속이란, 기존의 클래스를 재사용하여 새로운 클래스를 작성하는 것이다. 상속을 통해서 클래스를 작성하면 보다 적은양의 코드로 새로운 클래스를 작성할 수 있고 코드를 공통적으로 관리할 수 있기 떄문에 코드의 추가 및 변경이 매우 용이하다. 이러한 특징은 코드의 재사용성을 높이고 코드의 중복을 제거하여 프로그램의 생산성과 유지보수에 크게 기여한다. class child extends Parent { // ... } 조상 클래스 부모 클래스, 상위 클래스, 기반 클래스 자손 클래스 자식 클래스, 하위 클래스, 파생된 클래스 class Parent{ } class Child extends Parent{ } - 생성자와 초기화 블럭은 상속되지 않는다. 멤버만 상속된다. - 자손 클래스의 멤버 개수는 조상 클..
변수의 초기화 변수를 선언하고 처음으로 값 저장하는 것을 '변수의 초기화'라고 한다. 변수의 초기화는 경우에 따라서 필수적이기도 하고 선택적이기도 하지만, 가능하면 선언과 동시에 적절한 값으로 초기화 하는 것이 바람직합니다. class InitTest{ int x; int y; void method1() { int i ;//지역변수 int j = i;// 에러. 지역변수를 초기화하지 않고 사용 } } ※ 맴버변수(클래스변수와 인스턴스변수)와 배열의 초기화는 선택적이지만, 지역변수 초기화는 필수적이다. ▶멤버변수의 초기화 방법 명시적 초기화 생성자 초기화 블럭 - 인스턴스 초기화 블럭 : 인스턴스 변수를 초기화 하는데 사용 - 클래스 초기화 블럭 : 클래스 변수를 초기화 하는데 사용 명시적 초기화 // 변..
생성자란? 생성자는 인스턴스가 생성될 떄 호출되는 '인스턴스 초기화 메서드'이다. 따라서 인스턴스 변수의 초기화 작업에 주로 사용되며, 인스턴스 생성 시에 실행되어야 할 작업을 위해서 사용된다. 생성자 역시 메서드처럼 클래스 내에 선언되며, 구조도 메서드와 유사하지만 리턴값이 없다는 점이 다르다. 1. 생성자의 이름은 클래스의 이름과 같아야 한다. 2. 생성자는 리턴 값이 없다. 클래스 이름(타입 변수명, 타입 변수명...){ //인스턴스 생성시 수행될 코드, // 주로 인스턴스 변수의 초기화 코드를 적는다. } class Card{ Card(){//매개변수가 없는 생성자. ... } Card(String k, int num){//매개변수가 있는 생성자. ... } ... } Card c = new Ca..
오버로딩이란? 한 클래스 내에 같은 이름의 메서드를 여러 개 정의하는 것을 '메서드 오버로딩' 또는 '오버로딩'이라 한다. 오버로딩의 조건 1. 메서드 이름이 같아야 한다. 2. 매개변수의 개수 또는 타입이 달라야 한다. 오버로딩의 예 [보기1] int add (int a, int b) { return a+b; } int add(int x, int y) { return x+y; } 위의 두 메서드는 매개변수의 이름만 다를 뿐 매개변수의 타입이 같기 떄문에 오버로딩이 성립하지 않는다. [보기2] int add(int a, int b } {return a +b;} long add(int a, int b} { return(long)(a+b)} 매개변수의 타입과 개수가 일치하기 떄문에 호출 시 어떤 메서드가 호..