공부일지
231010 (Java)
CD가참둥그렇다
2023. 10. 10. 17:57
복습 테스트
- CarMain클래스를 추가하고 메인에 car 클래스 인스턴스화
- car 클래스에 아무 속성 추가 후 메인에서 값 할당 및 출력
- car 클래스에 아무 속성을 꼭 입력 받아야만 생성되게 생성자 메소드 구현
public class Car {
String name;
int type;
String memo;
public Car(String name, int type) {
this.name = name;
this.type = type;
}
}
public class CarMain {
public static void main(String[] args) {
Car car = new Car("차 이름", 123);
car.memo = "메모메모";
System.out.println(car.name);
System.out.println(car.type);
System.out.println(car.memo);
}
}
메소드
- 클래스 중괄호 사이에 있는 모든 것들 = 멤버
- 그 중 변수 클래스 등등으로 선언 되어 있는 것 = 필드, 속성, 인스턴스 변수, iv
- 기능을 담당하는 것은 메소드라고 함
- 메소드의 선언
- 접근 제한자 : public, private, default, protected
- 접근 권한에 따라 우측이 더 제한된 접근을 허용함
- 리턴 타입 : void, 혹은 변수 타입 = 반환할 타입을 지정한다.
- 접근 제한자 → 리턴 타입 → 메소드 명 → ()매개변수, 파라미터 → {코드}
- 접근 제한자 : public, private, default, protected
- 파라미터가 여러 개인 경우 나열을 통해 투입할 수 있다.
void 메소드 테스트
- 메소드 3, 4 구현하기
- 문자열과 숫자를 입력 받아 출력하는 메소드를 만들기
- 숫자를 입력 받아 해당하는 숫자만큼 콘솔창에 출력이라는 글자를 출력하는 메소드 만들기
public class Car {
public void cdMethod() {
System.out.println("void는 return 타입이 없다.");
System.out.println("현재 메소드는 클래스의 블럭킹 내부에 있다.");
System.out.println("cdMethod는 클래스의 멤머, 인스턴스 멤버");
}
public void cdMethod1(String name) {
System.out.println(name + " 이(가) 공부 중");
}
public void cdMethod2(String name, String state) {
System.out.println(name + " 이(가) "+state+" 중");
}
public void cdMethod3(String name, int price) {
System.out.println(name + "의 가격은 "+price+"원 입니다.");
}
public void cdMethod4(String name, int stock) {
System.out.println(name + "의 재고는 "+stock+"개 입니다.");
}
public void cdMethod5(int num) {
for (int i=0; i<num; i++) {
System.out.print("출력");
if (i==num-1) {
System.out.println();
}
}
}
}
public class CarMain {
public static void main(String[] args) {
Car car = new Car();
car.cdMethod();
System.out.println();
car.cdMethod1("박찬영");
System.out.println();
car.cdMethod2("누군가", "휴식");
System.out.println();
car.cdMethod3("자동차", 10000000);
car.cdMethod4("자동차", 13);
car.cdMethod5(10);
}
}
반환 값이 있는 메소드
- Calculator 클래스를 만들고 기능 4가지 구현하기
- 기능 1. .plus 두 수를 입력 받아 두 수의 합을 바로 출력하는 메소드 반환x
- 기능 2. .minus 두 수를 입력 받아 두 수의 차를 바로 출력하는 메소드 반환x
- 기능 3. mul 두 수의 곱을 메소드 호출부로 반환. 출력은 메인에서
- 기능 4. div 두 수의 나누기 몫을 메소드 호출부로 반환. 출력은 메인에서
public class Calculator {
public void plus(int a, int b) {
System.out.println(a+b);
}
public void minus(int a, int b) {
System.out.println(a-b);
}
public int mul(int a, int b) {
return a*b;
}
public int div(int a, int b) {
return a/b;
}
}
public class CalculatorMain {
public static void main(String[] args) {
Calculator calc = new Calculator();
int a = 5;
int b = 2;
calc.plus(a, b);
calc.minus(a, b);
System.out.println(calc.mul(a, b));
System.out.println(calc.div(a, b));
}
}
메소드의 테스트
- 컴퓨터의 전원에 따라 실행, 혹은 오류 메세지를 출력하도록 한다.
public class Computer {
boolean isPower;
public void power() {
isPower = !isPower;
System.out.println("전원"+isPower);
}
public void plus(int a, int b) {
if (isPower) {
System.out.println(a+b);
} else {
System.out.println("컴퓨터의 전원을 켜주세요");
}
}
}
public class ComputerMain {
public static void main(String[] args) {
Computer com = new Computer();
int a=5, b=2;
com.plus(a, b);
com.power();
com.plus(a, b);
}
}
멤버
- 멤버는 스태틱과 인스턴스로 구분됨.
- 스태틱 키워드가 있으면 스태틱 없다면 인스턴스로 구분된다.
- 인스턴스는 인스턴스화를 거쳐야 사용 가능, 스태틱은 항상 사용 가능
- 인스턴스의 접근 방식 class.을 이용
- 스태틱의 접근 방식 Class.이 이용 방식(인스턴스 없이 바로 사용 가능)
- 스태틱은 메모리를 많이 잡아먹는다. 가급적 사용을 줄여야 한다.
- 스태틱 메소드 내부에 인스턴스 멤버를 포함시킬 수 없다.
public class Member {
int iField;
static int sField;
public void iMethod() {
System.out.println(iField + "인스턴스 메소드" + sField);
}
public static void sMethod() {
System.out.println("스태틱 메소드"+sField);
}
}
public class MemberMain {
public static void main(String[] args) {
System.out.println(Member.sField);
Member.sMethod();
Member mem = new Member();
System.out.println(mem.iField);
mem.iMethod();
}
}