JAVA 63

[JAVA] 제어자(modifier)

제어자(modifier) 제어자는 클래스, 변수 또는 메서드의 선언부에 함께 사용되어 부가적인 의미를 부여한다. - 클래스, 변수, 메서드의 선언부에 사용되어 부가적인 의미를 부여한다. 제어자는 클래스나 멤버변수와 메서드에 주로 사용되며, 하나의 대상에 대해서 여러 제어자를 조합하여 사용하는 것이 가능하다. 단, 접근 제어자는 한 번에 네 가지 중 하나만 선택해서 사용할 수 있다. 즉, 하나의 대상에 대해서 public과 private을 함께 사용할 수 없다. 접근제어자는 4개 중 하나만 붙일 수 있다. 아무것도 안붙이는 게 default 하나의 대상에 여러 제어자를 같이 사용가능(접근 제어자는 하나만). 접근 제어자를 제일 왼쪽에 쓴다. static - 클래스의, 공통적인 static 은 '클래스의',..

[JAVA] import문

import문 - 사용할 클래스가 속한 패키지를 지정하는데 사용 import문을 사용하면 클래스를 사용할 때 패키지명을 생략할 수 있다. ctrl+shift+o 자동으로 import문 만들어짐 java.lang패키지의 클래스는 import하지 않고도 사용할 수 있다. (생략 가능) 일반적인 소스파일(*.java)의 구성 1.package문 2.import문 3.클래스 선언 import 패키지명.클래스명; 또는 import 패키지명.*; 이 패키지에 속한 모든 클래스 import문은 패키지문과 클래스선언의 사이에 선언한다. 같은 패키지에서 여러 개의 클래스가 사용될 때, import문을 여러 번 사용하는대신 '패키지명.*'을 이용해서 지정된 패키지에 속하는 모든 클래스를 패키지명 없이 사용할 수 있다. -..

[JAVA] super, super()

super ▶ this – 인스턴스 자신을 가리키는 참조변수. 인스턴스의 주소가 저장되어있음 모든 인스턴스 메서드에 지역변수로 숨겨진 채로 존재 ▶ super – this와 같음. 조상의 멤버와 자신의 멤버를 구별하는 데 사용. 상속받은 멤버와 자신의 클래스에 정의된 멤버의 이름이 같을 때는 super를 붙여서 구별. 조상 클래스로부터 상속받은 멤버도 자손 클래스 자신의 멤버이므로 super대신 this를 사용할 수 있다. 그래도 조상 클래스의 멤버와 자손 클래스의 멤버가 중복 정의되어 서로 구별해야하는 경우에만 super 를 사용하는 것이 좋다. 모든 인스턴스메서드에는 자신이 속한 인스턴스의 주소가 지역변수로 저장되는데, 이것이 참조변수인 this와 super의 값이 된다. static 메서드(클래스메..

[JAVA] Object클래스

Object클래스 모든 상속계층도의 최상위에 있는 조상클래스이다. 다른 클래스로부터 상속 받지 않는 모든 클래스들은 자동적으로 Object클래스로부터 상속받게 한다. - 조상이 없는 클래스는 자동적으로 Object클래스를 상속받게 된다. - 상속계층도의 최상위에는 Object클래스가 위치한다. - 모든 클래스는 Object클래스에 정의된 11개의 메서드를 상속받는다. toString(), equals(Object obj), hashCode(), ... 컴파일러가 자동적으로 extends Object를 추가하여 Tv클래스가 Object클래스로부터 상속받도록 한다. 상속 계층도 toString 메서드가 문자열을 반환했고 println이 참조변수가 들어오면 toString을 호출한다. System.out.pr..

[JAVA] 단일 상속(single inheritance)

단일 상속(single inheritance) Java 는 단일 상속만을 허용한다. - 비중이 높은 클래스 하나만 상속관계로, 나머지는 포함관계로 한다. 예4) class Tv{ boolean power; int channel; void power(){power =!power;} void channelUp() {++channel;} void channelDown() {--channel;} } class VCR { boolean power; int counter =0; void power() {power = !power;} void play() {} void stop() {} void rew() {} void ff() {} } class TVCR extends Tv{ VCR vcr = new VCR(); ..

[JAVA]포함(composite)

▶ 포함(composite)이란? - 한 클래스의 멤버변수로 다른 클래스를 선언하는 것 - 작은 단위의 클래스를 먼저 만들고, 이 들을 조합해서 하나의 커다란 클래스를 만든다. 한 클래스의 멤버변수로 다른 클래스 타입의 참조변수를 선언하는 것이다. Circle이 Point를 포함하고 있다. 한 클래스를 작성하는데 다른 클래스를 멤버변수로 선언하여 포함시키는 것 작은 단위의 클래를 만들고, 이 들을 조합해서 클래스를 만든다.

[JAVA] 상속(inheritance)

▶ 상속이란? - 기존의 클래스를 재사용해서 새로운 클래스를 작성하는 것. - 두 클래스를 조상과 자손으로 관계를 맺어주는 것. - 자손은 조상의 모든 멤버를 상속받는다.(생성자, 초기화블럭 제외) - 자손의 멤버개수는 조상보다 적을 수 없다.(같거나 많다.) 새로 작성하고자 하는 클래스의 이름 뒤에 상속받고자 하는 클래스의 이름은 키워드 'extends'와 함께 써주면 된다. 상속해주는 클래스를 '조상 클래스', 상속받는 클래스를 '자손 클래스'라고 한다. 조상 클래스 부모(parent) 클래스, 상위(super)클래스, 기반(base)클래스 자손 클래스 자식(child) 클래스, 하위(sub) 클래스, 파생된(derived) 클래스 클래스 간의 상속관계를 그림으로 표현한 것을 상속계층도(class h..

[JAVA] 변수의 초기화

변수의 초기화 - 변수를 선언하고 처음으로 값을 저장하는 것 - 멤버변수(인스턴스변수,클래스변수)와 배열은 각 타입의 기본값으로 자동초기화되므로 초기화를 생략할 수 있다. - 지역변수는 사용전에 꼭!!! 초기화를 해주어야한다. 인스턴스 변수 x는 초기화를 해주지 않아도 자동적으로 int형의 기본값인 0으로 초기화되므로, 'int y= x' 와 같이 할 수 있다. x의 값이 0이므로 y역시 0이 저장된다. 하지만 method1()의 경우, 지역변수는 자동적으로 초기화되지 않으므로, 모르는 i의 값을 j에 넣으려고 하다보니 에러. 멤버변수(클래스변수와 인스턴스변수)와 배열의 초기화는 선택적이지만, 지역변수의 초기화는 필수적이다. 각 타입의 기본값 ▶멤버변수의 초기화 방법 1. 명시적 초기화(explicit ..

[JAVA] 생성자 this() / 참조변수 this

생성자 this() 생성자, 같은 클래스의 다른 생성자를 호출할 때 사용 (같은 클래스 안에 있는 생성자를 호출할 때는 클래스 이름 대신 this 사용) -다른 생성자 호출 시 첫 줄에서만 가능 생성자에서 다른 생성자를 첫 줄에서만 호출 가능하도록 한 이유는 생성자 내에서 초기화 작업 도중에 다른 생성자를 호출하게 되면, 호출된 다른 생성자 내에서도 멤버변수들의 값을 초기화할 것이므로 다른 생성자를 호출하기 이전의 초기화 작업이 무의미해질 수 있기 때문이다. 예25) class Car1 { String color; String geartype; int door; Car1() { this("white", "auto", 4); } Car1(String color) { this(color, "auto", 4)..

[JAVA]매개변수가 있는 생성자

매개변수가 있는 생성자 Car 인스턴스를 생성할 때, 생성자 Car()를 사용하면, 인스턴스를 생성한 다음에 인스턴스 변수들을 따로 초기화해주어야하지만, 매개변수가 있는 생성자 Car(String c, String g, int d)를 사용하면 인스턴스를 생성하는 동시에 원하는 값으로 초기화를 할 수 있게 된다. 1. 참조변수 생성 2. new 연산자가 객체 만든다 3. 생성자 호출되면서 객체 초기화 4. 참조변수 안에 저장 예24) class Car { // 필드 생성 String color; String geartype; int door; //생성자 생성 // 기본 생성자 Car() { } // 매개변수가 있는 생성자 Car(String c, String g, int d) { color = c; gea..