10일차 강의 정리
DAY8, DAY9, DAY10 은 클래스의 구성요소에 대해 다룬다
1. Car class
소스1
public class Ex01 {
public static void main(String[] args) {
Car myCar = new Car(); //myCar 클래스 선언
System.out.println(myCar.model);
System.out.println(myCar.color);
myCar.run();
myCar.stop();
myCar.run();
myCar.color="파랑"; //myCar 색상 변경
System.out.println(myCar.color+"색"+myCar.model+"인 내차를 타고");
myCar.run();
System.out.println();
Car yourCar = new Car(); //yourCar 클래스 선언
System.out.println(yourCar.color+"색"+yourCar.model+"인 옆사람 차");
}//main end
}//Ex02 class end
class Car{ //Car class
String model = "모닝";
String color = "빨강";
public void run(){ //달린다
System.out.println("달린다");
}
public void stop(){ //멈춘다
System.out.println("멈춘다");
}
}//Car class end
결과1
소스2
public class Ex02 {
public static void main(String[] args) {
motocycle my = new motocycle();
int speed = 0;
speed = my.speedUp(speed, 20); //속도업
speed = my.speedUp(speed, 30);
speed = my.speedUp(speed, 10);
my.speedView(speed);
speed = my.speedDown(speed,20); //속도다운
speed = my.speedDown(speed,10);
speed = my.speedDown(speed,10);
my.speedView(speed);
}//main end
}//class end
class motocycle{
public void speedView(int speed){
System.out.println("현재속도:"+speed+"km");
}
public int speedUp(int a,int b){ //스피드 업
if(a+b<=80){
return a+b;
}else{
return 80; //최대속도 제한
}
}
public int speedDown(int a,int b){ //스피드 다운
if(a-b>=0){
return a-b;
}else{
return 0; //정지시 속도는 0
}
}
}//class end
결과2
소스3
public class Ex03 {
static String model = "텍트";
int speed;
int minSpeed;
int maxSpeed=80;
public static void main(String[] args) {
Ex03 me = new Ex03(); //객체 생성
me.speedUp(20);
me.speedUp(20);
prn(me);
me.speedUp(20);
prn(me);
me.speedUp(20);
prn(me);
me.speedUp(20);
prn(me);
me.speedUp(20);
prn(me);
me.speedUp(20);
me.speedUp(20);
prn(me);
me.speedDown(20);
prn(me);
}//main end
public static void prn(Ex03 me){ //(String st)과 같은 개념, String 또한 클래스 이다
System.out.println(model+"의 현재속도는 "+me.speed+"km");
}
public void speedUp(int speed1){
if(speed+speed1<=maxSpeed){
speed += speed1;
}else{
speed = maxSpeed;
}
}//speedUp end
public void speedDown(int speed1){
if(speed-speed1>=0){
speed -= speed1;
}else{
speed =0;
}
}//speedDown end
}//class end
결과3
2. 생성자 -객체 생성 관여
객체 생성시 단한번 수행
생성자 없이는 객체 생성이 불가
필드의 초기화가 주 이다
소스
public class Ex01 {
public static int num1; //static 을 사용하는 순간 ,값을 유지하며 공유하게된다
public int num2; //초기화 하지않아도 defualt값 0으로 초기화
public Ex01(){ //생성자
System.out.println("객체 생성");
}
public static void main(String[] args) {
//생성자 호출 . 객체의 주소를 me에 저장 //객체를 생성하면서 생성자 안의 print문을 출력
Ex01 me = new Ex01();
me.func1();
me.func2();
me.func1();
me.func3();
me.func1();
System.out.println("---------------");
Ex01 me2 = new Ex01(); //다시 객체를 생성하지만 static 변수인 num1은 갑을 유지하기 때문에 1이다
me2.func1();
me2.func2();
me2.func1();
me2.func3();
me2.func1();
}//main end
public void func1(){ //결과출력
System.out.println("num1:"+num1+", num2:"+num2);
}
public void func2(){ //num1 +1
num1++;
}
public void func3(){ //num1의 수를 num2에 대입
num2=num1;
}
}//class end
결과
소스2
인자값을 받는 생성자
public class Ex02 {
String name = "모닝";
int speed;
int maxSpeed;
int minSpeed;
public Ex02(){ //기본 생성자
speed=0;
maxSpeed=80;
minSpeed=0;
}
public Ex02(String st){ //인자 값을 받는 생성자
name = st;
maxSpeed=80;
minSpeed=0;
}
public Ex02(String st, int a){
name =st;
maxSpeed=a;
minSpeed=0;
}
public static void main(String[] args) {
Ex02 me = new Ex02(); //내 객체 생성
me.speedUp(10);
System.out.println("내차 "+me.name+"의 속도는 "+me.speed+"km");
me.speedUp(30);
System.out.println("내차 "+me.name+"의 속도는 "+me.speed+"km");
me.speedDown(20);
System.out.println("내차 "+me.name+"의 속도는 "+me.speed+"km");
System.out.println("-------------------------------");
Ex02 you = new Ex02(); //너 객체 생성
you.name="스파크";
you.speedUp(50);
System.out.println("너차 "+you.name+"의 속도는 "+you.speed+"km");
you.speedDown(80);
System.out.println("내차 "+you.name+"의 속도는 "+you.speed+"km");
System.out.println("-------------------------------");
Ex02 that = new Ex02("올란도",250); //옆반 객체 생성 //해당 인자값이 있는 생성자로
that.speedUp(40);
that.speedUp(40);
that.speedUp(40);
that.speedUp(40);
that.speedUp(40);
that.speedUp(70);
System.out.println("옆반차 "+that.name+"의 속도는 "+that.speed+"km");
}//main end
public void speedUp(int a){ //스피드 업
if(speed+a<=maxSpeed){
speed += a;
}else { speed=maxSpeed; }
}
public void speedDown(int a){ //스피드 다운
if(speed-a>=0){
speed -= a;
}else { speed=minSpeed; }
}
}//class end
인자값을 받는 생성자를 사용할 경우
기본생성자 또한 반드시 작성해야한다
원래는 생성자는 자동 생성해주지만 이경우에는 자동으로 생성해주지 않는다
결과2
소스
Scanner 간단하게 사용하기
public class Ex03 {
Scanner sc;
public Ex03(Scanner sc2){ //생성자
sc = sc2;
}
public static void main(String[] args) {
System.out.println("main start");
System.out.print("입력 : ");
Scanner sc = new Scanner(System.in); //모든 결정권이 main 에 있다
Ex03 me = new Ex03(sc);
System.out.println("main>>>"+sc.nextLine()); //입력 받으며 출력
me.func1(); //func1 호출
}//main end
public void func1(){
System.out.println("func1");
System.out.print("입력 : ");
String temp=sc.nextLine(); //func1입력
System.out.println("func1>>>"+temp);
func2();
}
public void func2(){
System.out.println("func2");
System.out.print("입력 : ");
System.out.println("func2>>>"+sc.nextLine()); //func2입력 받으며 출력
}
}//class end
결과