일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- 오버라이딩과 오버로딩 차이점
- static 메서드
- 운영체제의 목적
- 클래스 변수
- 운영체제란 무엇인가
- static import문
- 이것이코딩테스트다
- 명예의전당(1)
- this()와 참조변수 this 차이점
- 참조형 반환타입
- 운영체제의 예
- 인스턴스 메서드
- this()
- webview_flutter
- 기본형 매개변수
- 호출스택
- stateful widget 생명주기
- FLUTTER
- 운영체제의 구조
- 조상의 생성자
- 오버로딩
- object클래스
- PriorityQueue
- 참조형 매개변수
- 초기화 순서
- 객체 배열
- 운영체제의 분류
- stateless widget
- 프로그래머스
- stateful widget
- Today
- Total
Coram Deo
ch 7-10~16[객체지향 개념] - super, 패키지, classpath, import문 본문
ch 7-10 참조변수 super
- 객체 자신을 가리키는 참조변수. 인스턴스 메서드(생성자)내에만 존재
- 조상의 멤버를 자신의 멤버와 구별할 때 사용
* this는 lv와 iv 구별할 때 사용
class Ex7_3 {
public static void main(String args[]) {
Child2 c = new Child2();
c.method();
}
}
class Parent2 { int x = 10; // super.x와 this.x 둘 다 가능 }
class Child2 extends Parent2 {
void method() {
system.out println("x=" + x);
system.out println("this.x=" + this.x);
system.out println("super.x=" + super.x);
}
}
// 출력결과
// x=10
// this.x=10
// super.x=10
ch 7-11 super() - 조상의 생성자
- 조상의 생성자를 호출할 때 사용
- 조상의 멤버는 조상의 생성자를 호출해서 초기화
- 참조변수 super와 전혀 관계없음.
* 자손의 생성자는 자기가 선언한 것만 초기화 해야 함. 조상꺼는 super()를 통해 초기화.
- 모든 생성자는 첫 줄에 반드시 생성자를 호출해야 한다. (중요!)
* 그렇지 않으면 컴파일러가 생성자의 첫 줄에 super(); 를 삽입
* 이 경우에 부모 클래스에 기본 생성자가 없다면 에러남.
ch 7-12 패키지(package)
- 서로 관련된 클래스의 묶음
- 클래스는 클래스 파일(*.class), 패키지는 폴더. 하위 패키지는 하위 폴더
- 클래스의 실제 이름(full name)은 패키지를 포함.(java.lang.String)
- rt.jar는 클래스들을 압축한 파일(JDK 설치경로 \jre\lib에 위치)
* rt는 runtime (실행 중임을 의미함.)
* jar파일은 클래스 파일을 묶어놓은 것.(압축 파일)
* java9부터 rt.jar파일 없어짐. rt.jar 파일이 너무 커서 작은 module로 쪼개 놓음.
ch 7-13 패키지의 선언
- 패키지는 소스파일의 첫 번째 문장으로 단 한번 선언
- 같은 소스 파일의 클래스들은 모두 같은 패키지에 속하게 된다.
- 패키지 선언이 없으면 이름없는(unnamed) 패키지에 속하게 된다. (default package)
- 소스파일에서 직접 패키지 폴더 보려면
- 소스파일 우클릭 → Show In → System Explorer
- cmd 창에서 소스파일 실행하려면 bin폴더 경로 복사 후, bin 폴더경로로 이동.
- 예시) cd C:\java\workspace\ch07\bin
- 경로 이동 후, 파일 실행. 예시) java com.codechobo.book.PackageTest
- 파일 실행할 때 마다 매번 bin 폴더로 이동하기엔 너무 불편함. → 클래스 패스(class path)를 사용하면 문제 해결됨.
* bin 폴더 - 컴파일된 클래스 파일(*.class)이 있는 곳
* src폴더 - 소스파일(*.java)이 있는 곳
ch 7-14 클래스 패스(classpath)
- 클래스 파일(*.class)의 위치를 알려주는 경로(path)
- 환경변수 classpath로 관리하며, 경로간의 구분자는 ';'를 사용
- classpath(환경변수)에 패키지의 루트를 등록해줘야 함.
- class path 등록하면, 경로 이동 없이 바로 실행 가능.
- 클래스 패스 만드는 법
- 제어판 → 환경변수 → 시스템 → 환경변수 → 새로 만들기 →
- 변수이름 : classpath
- 변수값 : 실행하고 싶은 파일의 경로(예시 C:\java\workspace\ch07\bin)
- cmd에서 클래스 패스 값 확인 및 수정하는 법
- set classpath
- classpath 수정하려면, "set classpath=" 뒤에 세미콜론(;)붙인 후, 원하는 경로 추가하면 됨.
- 예시) set classpath=C:\java\workspace\ch07\bin;\jdk1.8\work\util\jar
- 이클립스 사용하면 이클립스에서 자동으로 해줌.
ch 7-15 import 문
- 클래스를 사용할 때 패키지이름을 생략할 수 있다.
- 컴파일러에게 클래스가 속한 패키지를 알려준다.
- 이클립스 자동으로 import문 생성 단축키 : ctrl + shift + o(알파벳)
- java.lang 패키지의 클래스는 import하지 않고도 사용할 수 있다.
예시) String, Object, System, Thread
원래는 import java.lang.*; 써야하지만, 생략 가능함.
- java.lang.* : '*' 표시는 java.lang 패키지 안에 있는 모든 클래스를 뜻함.
// import문 사용하지 않았을 경우
class ImportTest {
java.util.Data today = new java.util.Date();
}
// import문 사용했을 경우, 패키지 이름 생략가능
import java.util.Data;
class ImportTest {
Data today = new Date();
}
ch 7-15 import 문의 선언
- import문을 선언하는 방법은 다음과 같다.
import 패키지명.클래스명; // 단축키 : ctrl + shift + o
또는
import 패키지명.*; // 패키지 안에 있는 모든 클래스
- import문은 패키지문과 클래스선언의 사이에 선언한다.
- import문은 컴파일 시에 처리되므로 프로그램의 성능에 영향없음.
// import문 선언 시
// 클래스 하나하나 쓰면 어떤 클래스를 사용하는지 명확히 알 수 있다.
// 그러나 성능에 영향없음으로 편한대로 쓰면 된다.
// 보통 프로그램 개발할 때는 * 많이 쓰고, API나 라이브러리 개발할 때는 클래스 하나하나 명시하는 경우가 많다.
// 클래스이름 명시하는 경우
import java.util.Calendar;
import java.util.Date;
import java.util.ArrayList;
// '*' 사용하는 경우
import java.util.*;
- 다음의 두 코드는 서로 의미가 다르다.
// 1과 2는 다른 의미
// 1. 명시된 패키지의 모든 클래스
import java.util.*;
import java.text.*;
// 2. java패키지의 모든 클래스(패키지는 포함안됨.)
import java.*;
- 이름이 같은 클래스가 속한 두 패키지를 import 할 때는 클래스 앞에 패키지명을 붙여줘야 한다.
// 다른 패키지에 있는 클래스 이름이 동일한 경우
import java.sql.*; // java.sql.Date
import java.util.*; // java.util.Data
public class ImportTest {
public static void main(String() args) {
java.util.Date today = new java.util.Data(); // 클래스 앞에 패키지명 붙여주기
}
}
ch 7-16 static import 문
- static멤버를 사용할 때 클래스 이름을 생략할 수 있게 해준다.
- static import문을 사용하는 이유 : 클래스 이름을 붙이면 코드가 너무 길어짐. 그래서 생략하려고 씀.
웬만하면 static import문 사용하지 말기.
클래스 이름이 있으면 명확히 알아볼 수 있으니 꼭 필요할 때만 쓰기.
import.static java.lang.Integer.*; // Integer클래스의 모든 staic 메서드.
// * 은 Integer 클래스에 있는 모든 static 멤버를 의미함.(static 변수, static 메서드)
import.static java.lang.Math.random; // Math.random()만. random뒤에 괄호 안붙임.
import.static java.lang.System.out; // System.out을 out만으로 참조가능
// 원래 코드
system.out.println(Math.random());
// 생략한 코드
out.println(random());
'자바의 정석' 카테고리의 다른 글
ch 7-1~9 [객체지향 개념] - 상속, 포함 관계, 오버라이딩과 오버로딩 차이점 (0) | 2022.11.05 |
---|---|
ch 6-32~41 [객체지향 개념] - 생성자, this()와 참조변수 this 차이점, 변수 초기화 (0) | 2022.11.03 |
이클립스 git repository 경로 확인 방법 (0) | 2022.11.02 |
ch 6-26~31 [객체지향 개념] - static 메서드, 인스턴스 메서드, 오버로딩 (0) | 2022.11.01 |
코포자를 위한 코딩 공부법 #3 (0) | 2022.10.31 |