국비 교육 내용 정리

2023년 06월 05일 수업 내용 정리

jinpark1992 2023. 6. 7. 09:30

package ch06.obj1;

public class MemberCallEx1 {

static int cv1 = 10;

static int cv2 = cv1; // 클래스멤버간 호출

int iv1 = 100;

int iv2 = iv1; // 인스턴스멤버간 호출

int iv3 = cv1; // 인스턴스멤버에서 클래스 멤버 호출

// static int cv3 = iv1 //클래스 멤버에서 인스턴스 멤버 호출. => 객체화 필요

static int cv3 = new MemberCallEx1().iv1;

public static void main(String[] args) {

// cv2 = iv1; // 클래스 멤버인 main 메서드에서 iv1 인스턴스멤버 접근 불가

cv2 = new MemberCallEx1().iv1;

new MemberCallEx1().iv1 = cv2;

// method(); // error

new MemberCallEx1().method1();

method2();

} //2

void method1() {

System.out.println(cv1 + cv2);

System.out.println(iv1 + iv2);

}

static void method2() {

System.out.println(cv1 + cv2);

// System.out.println(iv1 + iv2);

MemberCallEx1 m = new MemberCallEx1();

System.out.println(m.iv1 + m.iv2);

}

}

 

 

 

package ch06.obj1;

public class MemberCallEx2 {

static int cv1 = 10;

static int cv2 = cv1;

int iv1 = 100;

int iv2 = iv1;

 

public static void main(String[] args) {

MemberCallEx2 m = new MemberCallEx2();

cv2 = m.iv1;

m.method1();

method2();

 

}

void method1() {

System.out.println(cv1 + cv2);

System.out.println(iv1 + iv2);

}

static void method2() {

MemberCallEx2 m = new MemberCallEx2();

System.out.println(cv1 + cv2);

System.out.println(m.iv1 + m.iv2);

}

package ch06.obj1;

public class OverloadEx1 {

public static void main(String[] args) {

Math3 m = new Math3();

System.out.println(m.add(10));

System.out.println(m.add(10.3));

System.out.println(m.add("번"));

}

}

class Math3 {

int a = 100;

double add(int b) {

System.out.println("1:");

return a + b;

}

double add(float b) {

System.out.println("2:");

return a + b;

}

double add(double b) {

System.out.println("3:");

return a + b;

}

double add(long b) {

System.out.println("4:");

return a + b;

}

double add(String b) {

System.out.println("5:");

return a + Double.parseDouble(b);

}

}

 

 

 

 

package ch06.obj1;

/*

* 오버로딩된 메서드의 선택 기준

* 1. 호출시 입력된 자료형과 선언부의 선언된 자료형이 동일한 메서드 선택.

* 2. 1의 조건이 없는 경우

* 최소 갯수로 자동형변환이 되는 매개변수를 가진 메서드를 선택.

* 3. 주의사항

* 최소 갯수로 자동형변환이 되는 메서드가 여러개인 경우 오류 발생.

*

* 오버로딩의 조건

* 1. 메서드의 이름이같다.

* 2. 매개변수 (type)목록이 다르다

*

* 리턴타입, 접근제어자동은 상관없다.

*

*/

public class OverloadEx2 {

public static void main(String[] args) {

Math4 m = new Math4();

System.out.println(m.add(10, 10));

System.out.println(m.add(10, 10L));

System.out.println(m.add(10L, 10));

System.out.println(m.add(10L, 10L));

}

}

class Math4 {

int add(int a, int b) {

System.out.println("int int 메서드 결과:");

return a + b;

}

long add(long a, int b) {

System.out.println("long int 메서드 결과:");

return a + b;

}

long add(int a, long b) {

System.out.println("long int 메서드 결과:");

return a + b;

}

long add(long a, long b) {

System.out.println("long int 메서드 결과:");

return a + b;

}

}

package ch06.obj1;

/*

* 생성자란 ?

* 객체화시 호출되는 메서드

* 생성자 없이 객체 생성은 불가함.

* 기능은 인스턴스 변수의 초기화 담당함.

*

* 생성자 구현

* 1. 생성자의 이름은 클래스명과 같다.

* 2. 리턴타입을 기술하지 않는다.

*

* 기본생성자

* 클래스에 생성자를 하나도 구현하지 않으면 컴파일러가 추가해주는 생성자

* public 클래스명(){} 형태임

*/

public class ConstructorEx1 {

public static void main(String[] args) {

Number1 n1 = new Number2();

n1.num = 10;

Number2 n2 = new Number2();

Number2 n3 = new Number2(20);

System.out.println("Number1 클래스의 num = " + n1.num);

System.out.println("Number1 클래스의 num = " + n2.num);

System.out.println("Number1 클래스의 num = " + n3.num);

}

}

class Number1 {

int num;

}

class Number2 extends Number1 {

int num;

Number2() {

}

Number2(int x) {

num = x;

}

}