-
2023년 06월 05일 수업 내용 정리국비 교육 내용 정리 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;
}
}
'국비 교육 내용 정리' 카테고리의 다른 글
Stack클래스? (0) 2023.06.17 객체 지향 용어 정리. (0) 2023.06.12 2023년 06월 01일 수업내용 정리 (0) 2023.06.01 2023년 05월 31일 공부 내용 정리 ( java) (0) 2023.05.31 2023년 05월 30일 공부 내용 정리 ( java) (0) 2023.05.30