오늘부터 객체지향프로그래밍에 대해 배운다. 굉장히 어려울거라고 하셔서 조금 걱정되지만 그래도 열심히 해봐야지!!
오늘 공부를 시작하기 전 인텔리제이에서의 오류가 발생했다. 콘솔창으로 출력되는 한글들이 모두 깨져서 나온것이다.
급하게 구글링하며 방법을 찾아봤고 2가지의 방법이 있었다.
1. 설정에서 파일인코딩,콘솔 인코딩을 모두 UTF-8로 변경하기.
실패였다. 여전히 한글은 깨져서 출력됐다.
2. 사용자 지정 VM 옵션에
-Dfile.encoding=UTF-8 -Dconsole.encoding=UTF-8
추가하기.
이또한 실패였다.
계속 구글링해본 결과 아무래도 이전에 설치한 jdk와 코드스테이츠를 시작하며 설치한 jdk, 그리고 환경변수에서의 오류 같았다.
환경변수 JAVA_HOME 에서 뭔지모를 오류가 있었다.
아직도 무슨 오류인지는 모르지만 jdk를 직접파일로 연결해줬더니 한글이 깨지지 않고 나온다.
아무리 봐도 JAVA_HOME에서의 파일 경로도 다른 환경변수들도 틀린게 없었다.
그래도 당장 문제있는건 해결했으니 후련하면서도 뿌듯했다.
조금 지체됐으나 바로 공부를 시작했다.
class 클래스명 {
}
class 클래스명{
// 내용
}
class 클래스명 {
static class {
//내용
}
}
class 클래스명 {
class 클래스명 {
//내용
}
}
class ex {
int iv; //인스턴스 변수
static cv; // 클래스 변수
void method() {
int lv = 0; // 지역변수
}
}
iv : new생성자()를 통해 인스턴스가 생성될때 만들어짐. 각자 고유한 속성 저장.
cv : 공통된 정보 저장공간.
lv : 메서드 내 블록에서만 사용가능. 직접 초기화하지않으면 오류발생.
클래스멤버가 사용하는 키워드. static이 붙어있으면 정적멤버로 인스턴스변수와 구분.
정적멤버 : 객체간의 공유 변수의 성질을 갖고있음. 메서드에서도 동일.
정적메서드 : 인스턴스변수,인스턴스메서드 사용 불가.
메서드 : 특정 작업을 실행하는 명령문들의 집합.
메서드 시그니처와 메서드 바디로 구분.
자바제어자 반환타입 메서드명(매개변수) { // Method Signature
메서드 내용 // Method body
}
메서드의 반환타입이 void가 아닌 경우 메서드 바디 안에 반드시 return문이 있어야함.
클래스 외부 : 인스턴스 생성 후 .
을 통해 호출.
클래스 내부 : 인스턴스 생성을 하지 않아도 호출 가능.
매서드명(매개변수1,매개변수2);
위와 같이 메서드를 호출할수있다.
메서드 호출 시 ()안에 입력값은 인자라고 한다.
하나의 클래스 안에 동일한 이름을 가진 메서드들을 정의하는것.
하지만 무조건 같은 이름이라고 해서 오버로딩이 일어나지 않음.
오버로딩이 성립되는 조건
걱정에 비해 생각보다 이해가 잘 됐던거같다. 자바스크립트에서 생성자함수와 비슷한 느낌이 들어서인지 빠르게 이해가 됐던것같다 아직 많이 남아서 걱정되긴하지만 잘 해봐야지!!