Overloading : 이름이 동일한 메소드들을 쌓는다.
오버로딩 조건
Class : 필드와 메소드의 집합체 + 생성자
//객체 = 참조 자료형 변수
참조자료형 형식
자료형 객체명 = new 자료형();
생성자(Constructor) : 객체를 생성하면서 동시에 멤버필드를 초기화하는 기능을 수행하는 것
생성자 형식 : public 생성자명( ){ }
정보은닉 : 멤버필드에 직접 접근하지 못하도록 막는 것 (encapsule)
접근제어자 종류 : public > protected > defalt > private
<허용 범위>
같은 클래스 => public protected defalt private
같은 패키지 => public protected defalt
같은 상속 자식 => public proteted
그외(같은 프로젝트만 허용) => public
<접근제어자 사용 가능 여부>
set메소드(매개변수 필수) get메소드는(리턴값 필수) 멤버필드 초기화 목적이다
private int x;
public void setX(int new_x) { //멤버필드 초기화 목적
x = new_x;
}
public int getX() {
return x;
}
*패키지 안에 새로운 패키지를 추가할 때는 패키지 이름을 패키지명.새로운패키지명으로 작성하면 된다
package 기술 방법
클래스형식의 바깥 맨 위에 기술(권장)
package 경로;
import 기술 방법
클래스 형식의 바깥에 기술 , 되도록 packge 구문 아래 기술
packge가 없을 때는 맨 위에 기술(권장)
import 경로.클래스명; or import 경로.*(경로 안에 들어간 모든 클래스 허용);
*클래스명이 같을 때는 객체생성시에 경로를 추가 하면 된다. (해당 클래스의 접근 제어자 확인)
public String name = "가나다";
public void setName(String nameVal) {
String name = nameVal; // 멤버변수 name와 메소드 변수 name은 서로 다른 변수
//name = null
} // 객체 생성시 setName(); 값을 지정하면 setName();에만 그 값이 들어간다
public String getName() {
return name; //name = "가나다"
}
. 실행이 안 될 때 => profects => Clean => f5
. 지역변수는 외부에서 접근이 안 된다.
static (클래스 변수): 메모리 공유 (해당 클래스 내에서)
this : 내 객체라는 의미
this() : 자신의 다른 생성자 호출
this() 생성자 안에만 기술 가능
this() 무조건 생성자 블록 안의 가장 맨 첫번째 줄에 와야한다.
싱글톤 패턴 : 하나의 (한 개의) 객체만 생성하도록 강제하는 패턴
instanceof(이항 연산자) : 객체 비교
System.out.println(m1 instanceof Memory); //m1의 자료형이 Memory에 속하는가
package secone;
public class ArgumentClass {
public static void main(String[] args) {
if(args.length <= 0) {
System.out.println("파리미터를 입력해주세요");
}else {
int a = 0;
int i =0;
for(String s : args) {
System.out.println("args["+ i +"]의 값은 " +s);
i++;
}
}
}
}
args[0]의 값은 가나
args[1]의 값은 다라
args[2]의 값은 마
args[3]의 값은 바사
//configurations -> Arguments 로 들어가서 파라미터를 직접 추가한다
//Ctrl + Shift + s + r =get,set 메소드 단축키
//tep => Shift + v main 메소드 단축키
//.split("-") 메소드 : -을 기준으로 스프링 배열을 만든다.
가나 - 다라 - 마 - 바사 => {"가나","다라","마","바사"}
wrapper class = 기본자료형을 참조자료형 화한 클래스
char => Character
int => Integer <=> Integer로 만든 객체명.toString(String화) <=> Interger.parsrInt(객체명 단 숫자만 있을 경우 )
long => Long <=> Long로 만든 객체명.toString(String화) <=> Long.parsrLong(객체명 단 숫자만 있을 경우)
float => Float <=> Float로 만든 객체명.toString(String화) <=> Float.parsrFloat(객체명 단 숫자만 있을 경우)
double => Double <=> Double로 만든 객체명.toString(String화) <=> Double.parsrDouble(객체명 단 숫자만 있을 경우)
//void 메소드에서는 return은 break역할을 한다
상속 : 기존 클래스 기능을 확장시키는 개념 (다향성을 위해 사용)
부모클래스 => 상위클래스 => Super => base
자식클래스 => 하위클래스 => Sub => derived
class 부모 {}
class 자식 extends 부모{}
//생성자는 상속 되지 않는다
//Object는 최상위 클래스 모든 클래스에 자동으로 상속된다
super :
super() : 자식의 생성자 안에