class 파일 컴파일 하면서 .class 붙일 때 어떤 퍼블릭 클래스안에 있냐? A(클래스안에)$1(첫번째)c클래스 파일.class
이클립스는 우리 대신에 jdk로 가서 컴파일을 실행시켜줌
cannot find symbol 뜨면 클래스 파일을 못찾는다고 에러뜨는 거임
Exam0410.java 컴파일 오류!
=> 이래서 이클립스 사용해야한다
nested class = 중첩클래스
4) 익명 클래스(anonymouse class)
Object obj = new Object() {
}
static 붙은 애들은 static 붙은 애들끼리만 사용가능
클래스에 static 붙으면 어디서든지 사용가능
public 안붙은 클래스는 같은 패키지에서만 사용가능하다
public 붙은 클래스는 다른 패키지에서도 사용가능하다....
상위 패키지 하위패키지 그런 거 없음 걍 패키지 다르면 안됨
public 붙어야지 다른 패키지에서 사용가능!!!!!!!
pakage privite member = non-public
다른 패키지에 있는 걸 사용하는 거는 패키지 이름을 임포트 해줘야함 상대경로 안댄다.
상대경로 그런 거 절대 안됨ㅇㅇㅇ
com.eomcs.oop.ex01.sub.Y2 obj;
obj = new com.eomcs.oop.ex01.sub.Y2();
이런식으로 써줘야함
pakage 어쩌구
import 2번
import하면 compiler 가 나 대신 경로를 붙여준다
하위 패키지 그런 거 존재XXXXXX
그래서 com.*; 이렇게 하면 밑에 있는 다른 패키지들 사용 XXX
즉 com 패키지 에 있는 거만 사용한다
와일드 카드 사용 자제해라~
java.lang 패키지에 있는 애들은 따로 import안해줘도 된다 왜냐? 가장 많이 사용하는 클래스이기 때문에 할 필요 없음 컴파일러가 자동으로 찾는다.
하드디스크에 있음
내부 class 는 메서드와 생명주기가 같지 않다.
args 는 시스템 argument 받음
인스턴스 필드를 연산하는가? 하고 물어보고 아니면 이 메서드를 굳이 클래스 안에 넣을 필요가 없다
new를 사용해서 메모리 준비
리팩토링 기법중에 move method 사용하면 된다
인스턴스의 주소를 메서드에게 줘야한다 원래 Score.calculate(s)였는데 s.calculate라고 쓰면된다
class 메서드 = static 메서드
instance 메서드 = non-static 메서드
static으로 선언된 변수는 스태틱/클래스 변수라고 부른다람쥐
클래스 변수는 Method Area에 올라올 때 생성된다 어디에 생성되냐 HEAP에 생성(?)
인스턴스 변수는 new 명령어를 통해서 생성 후 파라미터로 접근 가능하다. 그래서 호출할 때마다 파라미터로 객체 주소를 갖고 있는 애를 넘겨줘야함 => 이게 불편하니까 this. 사용해서 하면 된다 인스턴스 메서드에 내장변수 this 사용
인스턴스 변수 쓸 거면 non-static으로 만들면 됨
class 를 type이라고 말함
static 메서드는 걍 쓰면된다 클래스 이름으로 걍 호출ㅇㅇ
근데 인스턴스 메서드는 인스턴스를 만들고 써야함
스태틱 메서드를 new 연산자를 사용해서 호출하지 마라 비효율적임 그럼에도 문법적으로 허락하는 이유는 가아끔 쓸일이 있기 때문? 그래서 느슨하게 만들어놨다람쥐
중간에 조건이 에 대해서 잇으면 함수를 종료해라 하면 return 하면 함수 끝낸다
값을 리턴하지 않는 경우 return 안쓰면 된다
인스턴스 변수 사용하려면 new 명령어 사용해서 쓰면 된다
인스턴스 변수 this 에 저장된다
패키지 문법에는 static 개념이 없다
상위 클래스가 존재하는 경우에만 static 붙이거나 뗄 수 있음
A obj = new obj(); A 클래스에서 변수 선언 안에 있는 메소드 같은 건 해주지 않는다.
nullpointException 이거는 레퍼런스에 주소가 없다는 뜻임