개인적으로 헷갈리는 것 중요한 것 위주로 정리해두고 연습문제를 풀어본 글입니다.
- 메소드 오버로딩
메소드의 이름이 같으면?
이름이 같아도 매개변수 선언이 다르면 오버로딩, 구분할 수 있다.
class MyHone {
void mySimpleRoom(int n) { }
void mySimpleRoom(int n1, int n2) { }
void mySimpleRoom(double m1, double m2) { }
}
//이름이 같아도 매개변수로 메소드 구분됨, 메소드 오버로딩
매개변수 선언이 다른 경우는 매개변수의 수가 다르거나, 형이 달라야 한다. (반환형말고 자료형)
- 생성자 오버로딩
메소드와 같이 매개변수의 선언이 다른 경우 오버로딩이 가능하다.
class Person {
private int regiNum;
private int passNum;
Person(int rnum, int pnum) { //생성자1
regiNum = renum;
passNum = pnum;
}
Person(int rnum) { //생성자2
regiNum = rnum;
passNum = 0;
}
void showPersonalInfo() {
System.out.println("주민번호 : " + regiNum);
if(passNum != 0)
System.out.println("여권번호 : " + passNum + '\n');
else
System.out.println("여권번호가 등록되어 있지 않습니다.");
}
}
class ConOverloading {
public static void main(String[] args) {
Person kim = new Person(112233, 445566); //생성자1 인스턴스생성
Person lee = new Person(123456); //생성자2 인스턴스생성
kim.showPersonalInfo();
lee.showPersonalInfo();
}
}
- this
오버로딩 된 다른 생성자를 의미함
class SimpleBox {
private int data; //인스턴스변수
SimpleBox(int data) { //매개변수 선언
this.data = data;
}
}
* this를 사용해서 인스턴스에 접근할 수 있다.
- String 클래스
class StringInst {
public static void showString(String str) {
System.out.println(str);
System.out.println(str.length());
}
public static void main(String[] args) {
String str1 = new String("Simple String"); //인스턴스 생성1
String str2 = "The Best String"; //인스턴스 생성2
System.out.println(str1);
System.out.println(str1.length()); //length 반환값 전달
System.out.println(); //단순 개행
System.out.println(str2);
System.out.println(str2.length());
System.out.println();
showString("Funny String");
/*인스턴스 생성, 메소드 호출
System.out.println(str);
System.out.println(str.length());
*/
}
}
class ImmutableString {
public static void main(String[] args) {
//1번 경우
String str1 = "Simple String";
String str2 = "Simple String";
//2번 경우
String str3 = new String("Simple String");
String str4 = new String("Simple String");
//1번 경우
if(str1 == str2)
System.out.println("str1과 str2는 동일 인스턴스 참조");
else
System.out.println("str1과 str2는 다른 인스턴스 참조");
//2번 경우
if(str3 == str4)
System.out.println("str3과 str4는 동일 인스턴스 참조");
else
System.out.println("str3과 str4는 다른 인스턴스 참조");
}
}
/*
출력결과
str1과 str2는 동일 인스턴스 참조
str3과 str4는 다른 인스턴스 참조
*/
1번 경우, 2번 경우를 통해서 string 인스턴스는 변경할 수 없는 인스턴스임을 알 수 있다.
1번 경우는 문자열 내용이 같아 하나의 인스턴스를 생성해서 공유한 것 이고,
2번 경우는 new를 사용해서 인스턴스를 생성한 것이므로 두 개의 인스턴스가 생성된 것이다.
* String 인스턴스로 switch문을 구성할 수 있다.
switch(str) {
case "one" :
}
'열혈 Java 프로그래밍' 카테고리의 다른 글
[윤성우의 열혈 Java 프로그래밍] Chapter 12 콘솔 입출력 (0) | 2020.08.06 |
---|---|
[윤성우의 열혈 Java 프로그래밍] Chapter 11 String클래스 JDK (0) | 2020.08.06 |
[윤성우의 열혈 Java 프로그래밍] Chapter 10 클래스 변수, 클래스 메소드 (0) | 2020.08.03 |
[윤성우의 열혈 Java 프로그래밍] Chapter 09 Access-level Modifiers(public, private 등), 캡슐화 Encapsulation (1) | 2020.07.31 |
[윤성우의 열혈 Java 프로그래밍] Chapter 08 ClassPath, Package (0) | 2020.07.30 |