본문 바로가기

자바의정석

Java import문 import문 - 다른 패키지의 클래스를 사용하기 위해 패키지명이 포함된 클래스 이름을 사용해야하는데, import문을 이용하여 클래스를 사용할 때 패키지명을 생략할 수 있음 - import문은 컴파일러에게 클래스가 속한 패키지를 알려줌 - java.lang 패키지의 클래스는 Import하지 않고 사용 가능 EX. String, Object, System, Thread... // 이클립스 단축키 ctrl+ shift+o 자동으로 Import 생성 import문의 선언 - import문은 컴파일 시에 처리되므로 프로그램 성능에 영향 없음 - 이름이 같은 클래스가 속한 두 패키지를 import할 때는 클래스 앞에 패키지명을 붙여줘야 함 import 패키지명.클래스명; // 또는 import 패키지명.*; /.. 더보기
Java 참조변수 super 와 조상의 생성자 super() 참조변수 super - 객체 자신을 가리키는 참조변수. 인스턴스 메서드(생성자)내에만 존재 // static 메서드내에서는 사용 불가 - 조상의 멤버를 자신의 멤버와 구별할 때 사용 복습) this: lv와 iv구별에 사용 class Ex7_2 { public static void main(String args[]) { Child c = new Child(); c.method(); } } class Parent { int x=10; } class Child extends Parent { int x=20; void method() { System.out.println("x=" + x); // x=20 System.out.println("this.x=" + this.x); // this.x=20 System.. 더보기
Java 오버라이딩(Overriding) 과 오버로딩(Overloading) 메서드 오버라이딩(overriding) 상속받은 조상의 메서드를 자신에 맞게 변경하는 것 override: v. 덮어쓰다 오버라이딩의 조건 1. 선언부가 조상 클래스의 메서드와 일치해야 한다. 2. 접근제어자(public, protected, default, private)를 조상 클래스의 메서드보다 좁은 범위로 변경할 수 없음 3. 예외(8장에서 배움)는 조상 클래스의 메서드보다 많이 선언할 수 없음(자손의 예외는 조상 클래스보다 같거나 적음) class MyPoint3 { int x; int y; String getLocation() { // 조상클래스의 메서드 return "x:"+x+", y:"+y; } } class MyPoint3D extends MyPoint3 { int z; // 조상의 g.. 더보기
Java 클래스간의 관계 - 상속(Inheritance), 포함(Composite) 관계 클래스를 재사용하는 방법 1) 상속: ~은 ~이다.(is-a) 2) 포함관계: ~은 ~을 가지고 있다.(hsa-a) 1. 상속(Inheritance) 1) 상속이란? - 기존의 클래스를 재사용하여 새로운 클래스를 작성하는 것(코드의 재사용) - 두 클래스를 부모와 자식으로 관계를 맺어주는 것 - 자손은 조상의 모든 멤버를 상속 받음(생성자, 초기화 블럭 제외) - 자손의 멤버 개수는 조상보다 같거나 많음 - 자손의 변경은 조상에 영향을 미치지 않음 2) 상속을 구현하는 방법: 키워드 'extends' 사용 class 자식클래스 extends 부모클래스 { //... } 3) 단일 상속(single inheritance) - Java는 단일 상속만 허용(c++은 다중상속 허용) - 다중 상속을 허용하면 복.. 더보기
Java 변수의 초기화 1. 변수의 초기화: 변수를 선언하고 처음으로 값을 저장하는 것으로 경우에 따라 필수적이기도하고 선택적이기도함(초기화 권장) 2. 지역변수(lv)초기화: 수동 초기화 필수 3. 멤버 변수(cv, iv) 초기화 1) 초기화 순서 a. 클래스 변수(cv) 초기화 -> 인스턴스 변수(iv) 초기화 b. 자동 초기화 -> 명시적 초기화 -> 초기화 블럭, 생성자 2) 초기화 시점 a. 클래스 변수(cv) 초기화: 클래스가 처음 로딩될 때 단 한번 초기화 b. 인스턴스 변수(iv) 초기화: 인스턴스가 생성될 때 마다 초기화 3) 초기화 방법 a. 자동 초기화: 자동적으로 변수의 자료형에 맞는 기본값으로 초기화 됨 자료형 기본값 boolean false char '\u0000' byte, short, int 0 l.. 더보기
Java 생성자 간 호출 this()와 객체 자신을 가리키는 참조변수 this ⭐️ this()와 this는 완전히 다른 것⭐️ 1. this(): 생성자 간 호출 시 사용 1) 필수 조건 - 생성자 간 호출 시 클래스명 대신 this를 사용 - 생성자 간 호출 시 반드시 첫 줄에서만 호출(초기화 작업 도중 다른 생성자 호출 시 이전 초기화 작업이 무의미해질 수 있기 때문) class Car { String color; String gearType; int door; Car() { // Car 클래스의 기본 생성자 this("white", "auto", 4); // Car(String color, String gearType, int door) 호출 } Car(String color) { // Car 클래스의 매개변수가 1개인 생성자 this(color, "auto", 4); //.. 더보기
Java 생성자(constructor) 1. 생성자(constructor): 인스턴스가 생성될 때 호출되는 인스턴스 변수 초기화 메서드 1) 클래스 내에 선언 됨 2) 메서드와 유사한 구조이지만 리턴값이 없음 (생성자도 메서드이기 때문에 void를 붙여야 하지만 모든 생성자가 리턴값이 없으므로 void를 생략할 수 있게 한 것) 3) 생성자명은 클래스명과 같아야 함 class Card { // 클래스명과 생성자명은 같아야 함 ... Card() { // 매개변수 없는 생성자 // 인스턴스 초기화 작업 } Card(String kind, int number) { // 매개변수 있는 생성자 // 인스턴스 초기화 작업 } } 2. 기본 생성자(default constructor): 매개변수가 없는 생성자로, 클래스 내에 생성자가 존재하지 않을 경우.. 더보기
Java 메서드 오버로딩(method overloading) 1. 정의: 한 클래스 안에 같은 이름의 메서드를 여러개 정의하는 것 2. 오버로딩 성립 조건 1) 메서드명이 같음 2) 매개변수 개수 또는 타입이 달라야 함 3) 반환 타입은 관계 없음 더보기