노승현
Class 란? (2) 본문
메서드 vs 함수
메서드
함수에게 주어가 있는경우
funcA(); , main(); static 객체와 무관
student.hello();
data.printInfo();
rand.nextInt();
sc.nextInt();
System.out.println();
static 없음
. << 멤버접근 연산자
함수
주어가 없다
클래스명 객체명 = new 생성자();
객체
클래스 타입의 변수
객체명 == 인스턴스 instance (!=object)
객체를 생성할 때에는 new 생성자();
생성자
함수
"클래스와 이름이 같은"
멤버변수를 초기화하는 역할
★로그찍기
로그 == 현 상황을 알려주는 출력문
원인 String은 일반적인 원시타입이 아니다.
단순 연산자로는 비교가 불가능하다.
해결) .equals() 메서드를 사용해서 비교해야만 한다.
생성자 오버로딩
어떤 클래스의 모든 객체가 동일한 멤버변수값을 가질 때에 우리는 그 멤버변수를 공유자원이라고 하며
객체와 무관하므로 static을 붙임
static이 붙은건 더이상 멤버변수가 아니다. 그러므로 멤버변수를 초기화하는 생성자에서 초기화 하지않고
클래스에서 초기화한다.
공유자원 -> 클래스 소속
멤버변수 -> 객체(인스턴스) 소속
☆가장 인자가 많은 항목부터 생성한다
this . ? <<< 모든 멤버변수 앞에는 반드시 this를 붙일 것 ★
this. 를 붙인것과 안 붙인 것에는 성능차이가 발생한다.
인자가 많아지면 헷갈리기 때문에 this 를 사용 this . x = x
생성자에서 인자가 가장 많은 생성자를 제외하고 나머지 인자를 this ( ) 로 묶어서 사용할 수 있다
각각의 객체마다 다른값인가?
yes -> 멤버변수(속성)
각각의 객체가 다 같은 값인가?
yes -> static
클래스 소속