☕ 자바 JAVA 39

[JAVA]접근 제어자 access modifier

private 같은 class 내에서만 접근 가능. (default) 같은 package 내에서만 접근 가능. 접근 제어자를 안 붙였을 때 자동으로 default가 됨. ptotected 같은 package 내, 그리고 (다른 package여도) 자손 class에서 접근 가능. public 제한X. class에는 puablic 또는 (default) 만 붙일 수 있다. 또 file명과 동일한 class에만 public 접근 제어자를 붙일 수 있다. 접근 제어자를 사용하는 이유 외부로부터 데이터를 보호하기 위해서 외부에는 불필요한, 내부적으로만 사용되는, 부분을 감추기 위해서 그래서 접근제어자 범위를 좁힐 수 있다면 되도록 좁히는 게 좋다. 참고로 private과 public 을 주로 많이 씀..

[JAVA]제어자 modifier-접근 제어자 & 그 외

제어자 modifier : class와 class member(변수, method)에 부가적인 의미 부여 (마치 영어 형용사처럼) 종류는 두가지가 있는데 접근 제어자 public, protected, (default), private. 중 하나만 사용가능. 그 외 static, final, abstract, native, transient, synchronized, volatile, strictfp. 중복가능. 아래로는 중복 가능한 그외 static, final, abstract 에 대한 설명 static : class의, 공통적인 member변수 = cv:class vairable - 모든 instance에 공통적으로 사용되는 class변수가 된다. - class 변수는 instance를 생성하지 않고..

[JAVA]import문

class를 사용할 때 package이름을 생략할 수 있다 compiler에게 class가 속한 package를 알려준다. import문 선언 import 패키지명.클래스명; 또느 import 패키지명.*; *로 써도 compile 시에 처리되므로 프로그램 성능에 영향 없다. java.util.Date 에서 util은 package이므로 import java.*와 같이는 쓸 수 없다. 같은 package에 속한 class만 *로 불러 올수 있단 뜻. 작성순서 package 선언 import문 class 선언 static import문 : static 멤버를 사용할 때 class 이름을 생략할 수 있게 해준다. 원래는 Math.random(); 이렇게 써야하는데 위에 import static java.la..

[JAVA]package & class path. cmd로 java file실행과 환경변수 설정.

패키지 package 서로 관련된 class의 묶음. class는 *.class, package는 folder. 하위 package는 하위 foler..(package는 folder라느 말) class의 실제 이름(full name)은 package를 포함.(java.lang.String). rt.jar(runtime)는 class들을 압축한 파일(JDK설치경로 \jre\lib에 위치).. Jar9부터 rt.jar파일은 module로 잘게 쪼게져서 없다. * jar.exe는 zip과 똑같아서 zip파일 압축을 푸는 프로그램으로 풀 수 있다. package 선언 package study001; public class Package { public static void main(String[] args) {..

[JAVA]참조변수 super & 조상 생성자 super()

참조변수 super public class Super { public static void main(String[] args) { ChildClass child = new ChildClass(); child.method(); } } class ParentClass {int x = 10; /* super.x */} class ChildClass extends ParentClass { int x = 20; // this.x void method() { System.out.println("x=" + x); System.out.println("this.x" + this.x); System.out.println("super.x=" + super.x); } } 객체 자신을 가리키는 참조변수. (this와 비슷) 조..

[JAVA]오버라이딩 Overrinding

override : 덮어쓰다 Overriding : 조상의 method를 자신에 맞게 변경하는 것 class MyPoint { int x; int y; public String toString() { return "x :" + x + ", y :" + y; } } class MyPoint3D extends MyPoint { int z; public String toString() { // overriding return "x :" + x + ", y :" + y + ", z :" + z; } } 부모 class인 MyPoint에 있는 toString() 함수를 자식 class인 MyPoint3D에서 다르게 변경해서 사용할 수 있다. Overriding 조건 선언부는 변경불가. 구현부{ }를 변경해서 사용..

[JAVA]포함 composite

클래스의 관계는 크게 상속과 포함으로 나뉜다 상속관계 is-a : '~은 ~이다.' extends *여러가지 제약이 있으므로 꼭 필요할 때만 사용한다. 포함관계 has-a : '~은 ~을 가지고 있다.' 상속관계 extends를 호출할 때 public class Inheritance { public static void main(String[] args) { MyCircle myC = new MyCircle(); myC.x = 1; myC.y = 2; myC.r = 3; System.out.println("myC.x=" + myC.x); System.out.println("myC.y=" + myC.y); System.out.println("myC.r=" + myC.r); } } class Point { ..

[JAVA]상속 Inheritance

상속 Inheritance : 두 클래스를 부모와 자식으로 관계를 맺어주는 것. 기존의 클래스로 새로운 클래스를 작성하는 것(코드의 재사용). 2D 좌표를 표기하는 Point2D라는 이름의 class와 3D 좌표를 표기하는 Point3D라는 class가 있을 경우에 Point2D를 상속 받은 Point3D 클래스에서 x,y,z사용할 수 있습니다. class 명에 extend가 붙기 때문에.. 응용해보면..

[JAVA]변수의 초기화

지역변수lv는 사용 전 꼭 수동초기화 해야한다 int x; // 인스턴스 변수 iv int y = x; // 재사용이 빈번하여 자동으로 0으로 초기화된다. void method1() { int i; // 지역변수lv // int j = i; // ERROR 지역변수를 초기화하지 않아 사용할 시 에러. } 지역변수 lv : local valiable는 초기화 하지 않을 시 에러 발생. 따라서 변수 선언 시 값을 대입하는 초기화가 필요합니다. 인스턴스 변수 iv : instance valiable 은 사용이 빈번하여 클래스 생성시 자동으로 0으로 초기화 된다. 자동초기화시 참조변수는 null, boolean은 false, 그 외의 값은 0 으로 초기화된다고 보면 된다. 크게 명시적초기화(간단초기화) 와 bl..