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

결과


'* Programming > JAVA' 카테고리의 다른 글

DAY11 class 정리/상수화  (0) 2016.07.18
DAY10 업다운 게임  (0) 2016.07.18
DAY9 멤버필드  (0) 2016.07.15
Apache Ant  (0) 2016.07.13
DAY8 클래스 메소드  (0) 2016.07.13

+ Recent posts