Java
[IT국비지원교육_코딩_비전공자] 객체지향 / 기본형의 매개변수와 참조형 매개변수/ 오버라이딩/생성자
coolcode
2022. 1. 18. 14:01
package a220118;
public class ReferenceParamEX1 {
public static void main(String[] args) { // 배열선언
int[] arr = {3,2,1,6,5,4}; //메서드 3번 호출
printArr(arr);
sortArr(arr);
printArr(arr);
System.out.println("sum=" + sumArr(arr));
}
static void printArr(int[]arr) { //배열을 인자로 받아서 배열
System.out.print("[");
for(int i : arr) {
System.out.print(i+",");
}
System.out.println("]");
}
static int sumArr(int[]arr) {
int sum = 0;
for(int i : arr) {
sum += i;
}
return sum;
}
static void sortArr(int[]arr) {
for(int i = 0 ; i < arr.length - 1; i++) {
for(int j = 0 ; j < arr.length -1 -i ; j++) {
if(arr[j] > arr[j+1]) {
int tmp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = tmp;
}
}
}
}
}
package student;
// VO (Value Object)
public class Student {
// 학번, 이름, 국어, 영어, 수학
String no;
String name;
int kor;
int eng;
int mat;
static String schoolName= "휴먼초등학교";
//여기까지 field 끝
//총점(총점의 대상=> kor, eng, mat/ 0~100 사이) 평균
//static 키워드가 없으면 전부 인스턴스 메서드
//인스턴스 메서드내에서는 인스턴스 메서드를 제한없이 쓸 수 있음
int sum() {
return kor + eng + mat; //인스턴스 변수간의 상호 호출이 가능함
}
double avg() {
return (int)(sum() / 3d * 100) / 100d; }
//return sum() / 3d; // 3의 double type 캐스팅으로 실수간의 연산이 가능해짐
public static void main(String[] args) {
Student student = new Student();
student.no = "220001";
student.name = "홍길동";
student.kor = 90;
student.eng = 80;
student.mat = 80;
System.out.println(student.sum());
System.out.println(student.avg());
// 인스턴스 메서드 호출 시점에 인스턴스 메서드를 사용할 수 있음
}
}
package student;
import java.util.Scanner;
public class StudentEx {
public static void main(String[] args) {
// 1. 목록조회 2. 학생등록 3. 학생정보수정 4. 학생삭제 5. 종료
Scanner scanner = new Scanner(System.in);
for(boolean b = true ; b;) {
System.out.println("1. 목록조회 2. 학생등록 3. 학생정보수정 4. 학생삭제 5. 종료");
int input = Integer.parseInt(scanner.nextLine());
switch (input) {
case 1:
System.out.println("목록 조회입니다");
break;
case 2:
System.out.println("학생 등록입니다");
break;
case 3:
System.out.println("학생 정보 수정입니다");
break;
case 4:
System.out.println("학생 삭제입니다");
break;
case 5:
System.out.println("종료합니다");
break;
default:
System.out.println("올바른 번호를 입력하세요");
break;
}
}
scanner.close();
}
}
//mvc 패턴 > 기능에 관련된 것들은 별도의 클래스(서비스 클래스)로 관리함
package a220118;
public class FactorialTest {
public static void main(String[] args) {
int result = factorial(4);
System.out.println(result);
}
static int factorial2(int n) {
int result = 1;
for(int i = 1 ; i <= n ; i++) {
result *= i;
}
return result;
}
static int factorial(int n) {
int result = 0;
if(n==1) {
result = 1;
}
else {
result = n * factorial(n-1);
}
return result;
}
}
생성자
package a220118;
public class Car {
String color;
String gearType;
int door;
Car() {}
Car(String c, String g, int d) {
color = c;
gearType = g;
door = d;
}
}
package a220118;
public class CarTest {
public static void main(String[] args) {
Car c1 = new Car(); //인스턴스 생성
c1.color = "white"; //값 지정
c1.gearType = "auto";
c1.door = 4;
System.out.printf(
"c1의 color : %s, gearType : %s, door : %s%n"
,c1.color, c1.gearType,c1.door);
Car c2 = new Car("black", "manual", 6);
//인스턴스 생성과 동시에 값을 지정(위의 방법보다 높은 편의성)
System.out.printf(
"c2의 color : %s, gearType : %s, door : %s%n"
,c2.color, c2.gearType,c2.door);
// Car c1, c2
// this : 미래에 생성될 객체의 주소값
}
}
package a220118;
public class WhatIsThis {
public static void main(String[] args) {
WhatIsThis isThis = new WhatIsThis();
System.out.println(isThis);
isThis.printWhatIsThis();
System.out.println(isThis.getWhatIsThis());
}
WhatIsThis getWhatIsThis() {
return this; //this > 메서드 내에서 후에 인스턴스 주소값이 될 것을 지칭
} //클래스 변수,메서드 내에서는 this를 지칭할 수 없음
void printWhatIsThis() { //void는 별도 return없음
System.out.println(this);
}
}