1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
//String에서 제공하는 메소드를 살펴보자. (api)
public class StringTest4 {
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        String source1 ="aaabbbcccdddeeefffaaabbbcccdddeeefff";
        String source2 ="AAAbbbcccdddeeefffaaabbbcccdddeeefff";
        
        //char charAt(int index)
        //인자값으로 지정된 인덱스 위치의 문자 하나 반환
        System.out.println("원본문자열 : " +source1 );
        System.out.println("첫번째 문자  : source1.charAt(0) : "
                 +source1.charAt(0) );
        System.out.println("네번째 문자  : source1.charAt(0) : "
                +source1.charAt(3) );
        
        //int indexOf(String searchStr)
        //인자로 지정된 문자열을 원본문자열에서 검색해서 문자열이 존재하는
        //인덱스 번호를 반환
        System.out.println("aaa 문자열의 인덱스 번호 : " 
                + source1.indexOf("aaa"));
        
        //int lastIndexOf(String searchStr)
        //인자로 지정된 문자열을 원본문자열에서 뒤에서부터 검색해서 
        //문자열이 존재하는 인덱스 번호를 반환
        System.out.println("aaa 문자열의 인덱스 번호 : " 
                + source1.lastIndexOf("aaa"));
        
        //String substring(int startIndex)
        //startIndex 문자부터 마지막 문자까지 반환
        System.out.println("네번째 문자부터 마지막문자까지 추출  : source1.substring(3) : "
                +source1.substring(3) );
        
        //String substring(int startIndex, int endIndex)
        //startIndex 문자부터 endIndex -1 문자까지 반환
        System.out.println("네번째 문자부터 6번째문자까지 추출  : source1.substring(3,6) : "
                +source1.substring(3,6) );
        
        //String replace(String oldStr, String newStr)
        //oldStr을 newStr로 치환해줌
        System.out.println("원본문자열에서 aaa를 ggg로 변경 : " +
                source1.replace("aaa""ggg"));
        
        //boolean endsWith(String endStr)
        //문자열이 인자로 지정된 문자열로 끝나는지 판단
        //주로 확장자 확인할때 사용됨
        System.out.println("원본문자열이 fff로 끝나는지 확인 : "
                + source1.endsWith("fff"));
        
        //boolean startsWith(String startStr)
        //문자열이 인자로 지정된 문자열로 시작되는지 판단
        System.out.println("원본문자열이 aaa로 시작되는지 확인 : "
                + source1.startsWith("aaa"));
        
        //boolean contains(String searchStr)
        //원본문자열에 인자로 지정한 문자열이 포함되어 있는지를 판단
        System.out.println("원본문자열에 bbb문자열이 있는지 판단: " + source1.contains("bbb"));
        
        //int length()
        //문자열의 길이 반환
        System.out.println("원본문자열의 길이 : " + source1.length());
        
        //boolean equals(String str) '대소문자'를 구분하여서 문자열 비교
        System.out.println("source1 과 source2를 대소문자를 구분하여 비교: source1.equals(source2) :" 
                + source1.equals(source2));
        
        //boolean equalsIgnoreCase(String str)  '대소문자'를 구분하지 않고 문자열 비교
        System.out.println("source1 과 source2를 대소문자를 구분하여 비교: source1.equalsIgnoreCase(source2) :" 
                + source1.equalsIgnoreCase(source2));
        
        //String toUpperCase() 대문자로 변경
        System.out.println("source1을 대문자로 변경 : " + source1.toUpperCase());
        
        //String toLowerCase() 소문자로 변경
        System.out.println("source2을 소문자로 변경 : " + source2.toLowerCase());
        
        //String[] split(String delims) delims(인자)를 기준으로 원본문자열을 쪼갠다. 
        String source3 = "aaa,bbb,ccc";
        System.out.println(source3);
        String[] splitStrArray = source3.split(","); //,를 기준으로 분리된다. 
        System.out.println("");
        
        for(String str : splitStrArray) {
            System.out.println(str);
        }
        System.out.println();
        
        //String trim() 공백제거
        String source4 = " java ";
        System.out.println("원본문자열: '" + source4 + "'");
        System.out.println("공백제거후 source4 문자열 : source4.trim() : '"
                + source4.trim() + "'");    
        
        
        
        
        
    }
}
 
cs

'풀스택 > java' 카테고리의 다른 글

Java _ Stack 과 Queue 이해  (0) 2022.04.29
Java_ HashSet + Lotto  (0) 2022.04.29
자바_ Eclipse 단축키 모음  (0) 2022.04.19
자바_인터페이스 예제 Car  (0) 2022.04.19
자바_ 부모자식 클래스 상속 ~ 다형성까지  (0) 2022.04.14

인텔리제이

 

https://namu.wiki/w/%EB%84%A4%EC%B9%B4%EB%9D%BC%EC%BF%A0%EB%B0%B0

 

https://graphql.org/

'2024이전 > 목표와 다짐' 카테고리의 다른 글

딥러닝 특강 1일차  (0) 2022.08.06
MongoDB 관련 개념 정리  (0) 2022.08.06
정보처리기사 공부 관련 사이트  (0) 2022.08.06
코딩 공부 관련 사이트  (0) 2022.03.17
1월의 목표  (0) 2022.01.13

<Eclipse 단축키>

- Ctrl + Shift  + F - 소스 코드 자동 정리
- Ctrl + F11 - 실행(디버깅)
- Ctrl + Space - 입력 보조 장치 강제 호출 → 입력하는 도중에 언제라도 호출 가능
- Ctrl + D - 한 줄 삭제
- Ctrl + I - 들여쓰기 자동 수정
- Ctrl + Shift + '/' - 블록 주석(/* */)
- Ctrl + Shift + '\' - 블록 주석 해제
- Ctrl + '/' - 주석(//)
- Ctrl + F6 - Editor 창간의 이동
- Ctrl + 1 - 빠른 교정, 문맥에 맞게 소스 교정을 도와줌. 
               (클래스, 메소드를 필요한 위치에 자동 생성해줌)
- Ctrl + Shift + O - imoort문 자동 생성
- F6 - 디버깅 한줄씩 실행(step over)
- Alt + UP, Alt + Down - 줄바꿈, 해당 라인을 위아래로 이동
- Ctrl + Alt + Down - 복사 후 아래 붙여넣기
- Alt + Shift + UP - 블록 설정, 소스 코드를 블록단위로 설정
- Alt + Shift + Down - 블록 해제, 소스 코드를 블록단위로 해제

- Alt + Shift + x -> j  - 코드 실행.
- Ctrl + Shift + T - 클래스 찾기
- Shift + Alt +S → Generate Gettes and Setters - 
                           변수 get/set 함수생성, 여러개를 한번에 생성할 수 있음
- Ctrl + F -> 해당 단어 찾아서 치환



- F2 : Rename 이름변경

'풀스택 > java' 카테고리의 다른 글

Java_ HashSet + Lotto  (0) 2022.04.29
String에서 제공하는 메소드들  (0) 2022.04.29
자바_인터페이스 예제 Car  (0) 2022.04.19
자바_ 부모자식 클래스 상속 ~ 다형성까지  (0) 2022.04.14
자바 _ 상속관련 내용  (0) 2022.04.11

<문제>

interface: Speed

             필드명:   int SPEED= 10;

             메소드:   void upSpeed(int inc); //입력받은 속도가 양수인 경우

            voie downSpeed(int dec);    / //입력받은 속도가 음수인 경우

            void stop(); //입력받은 속도가 0 인 경우

interface: Display

             메소드 :  void  disp();         //계산,출력

class:Car

          필드명 : int inputVelocity;                 //입력받을속도

           int velocity;            //현재속도

          메소드 : void input();            //속도를 입력받고 disp()

Car 클래스를  Speed, Display  구현 받아서 처리

<**입.출력**>

속도입력 :  50

현재속도는  60km/h 입니다.

속도입력 : -20

현재속도는 40km/h 입니다.

속도입력 : -40

정지하셨습니다.

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
import java.util.Scanner;
 
interface Speed{
    int SPEED = 10;
    void upSpeed(int inc);
    void downSpeed(int dec);
    void stop(); //입력속도 0인 경우
}
interface Display extends Speed{
    void disp();
}
class Cars implements Display {
 
    
    int inputVelocity;//입력받을속도
    int velocity = SPEED;            //현재속도
    //void input();            //속도를 입력받고 disp() 
    
 
    @Override
    public void disp() {
        if(velocity < 0 ) {
            stop();
        }
        if(inputVelocity >0) {
            upSpeed(inputVelocity);
        }
        else {
            downSpeed(inputVelocity);
        }
        
    }
    
    @Override
    public void upSpeed(int inc) {
        velocity +=inc;
        System.out.println("현재 속도는 " + velocity +"km/h입니다." );
        
    }
 
    @Override
    public void downSpeed(int dec) {
        // TODO Auto-generated method stub
        velocity +=dec;
        System.out.println("현재 속도는 " + velocity +"km/h입니다." );
        
    }
 
    @Override
    public void stop() {
        // TODO Auto-generated method stub
        System.out.println("정지하셨습니다.");
    }
 
    
}
 
public class Car_1{
    
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int inputVelocity;
        Cars car = new Cars();
        
        while(true) {
            System.out.println("속도 입력: ");
            car.inputVelocity = scanner.nextInt();
            
            
            car.disp();
            
            if (car.velocity <=0) {
                car.stop();
                break;
            }
        }
        
    }        
    
}
cs

 

 

 

<정답>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
 
import java.util.Scanner;
 
interface Speed{
    int SPEED = 10;
    void upSpeed(int inc);
    void downSpeed(int dec);
    void stop(); //입력속도 0인 경우
}
interface Display extends Speed{
    void disp();
}
 
class car11 implements Speed, Display{
    int inputVelocity;
    int velocity = Speed.SPEED;
    void input() {
        Scanner scanner = new Scanner(System.in);
        System.out.print("속도 입력: ");
        inputVelocity = scanner.nextInt();
    };
    @Override
    public void disp() { 
        // TODO Auto-generated method stub
        //속도 계산
        if(inputVelocity >=0) {
            upSpeed(inputVelocity);
        }
        else {
            downSpeed(inputVelocity);
        }
        
        //출력
        if(velocity <= 0) {
            stop();
        }
        else {
            System.out.println("현재 속도는 " + velocity +"km/h입니다.");
        }
    }
    @Override
    public void downSpeed(int dec) {
        // TODO Auto-generated method stub
        velocity += dec; // +하는 이유 -로 넘어오기 때문에
        
    }@Override
    public void stop() {
        // TODO Auto-generated method stub
        System.out.println("정지하셨습니다.");
        
    }@Override
    public void upSpeed(int inc) { //up, down따로 만들필요없었다..?
        // TODO Auto-generated method stub
        velocity += inc;
        
    }
//여기에 Override 안쓰면 car11에 빨간줄 뜸.
 
public class Car_1_correctanswer {
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        car11 car = new car11();
        boolean stop = false;
        
        while(!stop) {
            car.input();
            if(car.velocity <=0) {
                stop = true;
            }
        }
 
    }
}
 
cs

'풀스택 > java' 카테고리의 다른 글

String에서 제공하는 메소드들  (0) 2022.04.29
자바_ Eclipse 단축키 모음  (0) 2022.04.19
자바_ 부모자식 클래스 상속 ~ 다형성까지  (0) 2022.04.14
자바 _ 상속관련 내용  (0) 2022.04.11
자바 메소드, 함수  (0) 2022.04.06

 

<Online GDB>

<온라인 쥐디비?>

 

 

이 사이트는 프로그램 설치 없이 c, java, python 등등 여러 언어를 사용해 볼 수 있다. 

 

 

 

 

<사용법>

 

 

1. 구글에 online gdb를 검색하고 바로 뜨는 사이트를 클릭한다.

 

 

2. 이런 화면이 나타나는데, 먼저 오른쪽 Language에서 언어를 선택해준 다음에 코딩을 하면 된다. 

 

 

 

3. 코딩을 하고 Run 버튼을 누르면 아래에서 결과창이 생기고 결과가 나타난다.

 

예시)

 

 

 

 


 

<! 주의할 점!>

클래스 명은 모두 main으로 지정해야 한다. 

 

그렇지 않으면 main을 발견할 수 없다는 에러가 나타난다.

 

 

 

 

이렇게 프로그램 설치 없이! 로그인 없이! 프로그래밍하는 사이트인 Online GDB를 알아보았다.

 

 

 

때는 9시 온라인 수업을 듣기위해서 컴퓨터를 켰는데..

엥? CTRL + G 단축키로 화면녹화가 안된다.

무슨일이지?

 

계속 찾아보고 했지만 1시간째 삽집만 하다가 스스로 알게 되었다. 

 

 

 

 

1. 설정 -> 앱 -> 앱 및 기능 -> 검색을 이용해서 'Xbox Game Bar 찾기

 

다른 유튜브에서 초기화 하라고 해서 했는데 안되고

그래서 삭제를 할려고 했는데, 애초에 깔려있지 않았다?.. ㅜㅜ

윈도우 업데이트 되면서 없어진 것 같다. 

 

 

 

 

2. 나와 같이 앱 자체가 없어졌다면 Mirosoft Store에 들어가서 다운 받는다. 

(로그인 안해도 설치 되었다.)

나는 열기로 나오지만, 설치 안되어있다면 설치글씨가 되어있을 것이다.

 

 

 

 

 

3. 열기를 해도 안된다면

 

왼쪽 하단의 라이브러리로 들어간다.

 

 

 

4. Xbox Game Bar를 업데이트 한다. 

그러곤 단축기를 사용해서 녹화가 가능해졌다!

 

 

 

의문인게, 설치를 했는데 라이브러리 들어가니까 다시 업데이트 하라는건지;;

이해할 수 없었다.

 

 

개념)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
//추상클래스 
 
//1. 추상클래스는 객체로 생성할 수 없다. 
//2. 추상클래스의 기능은 추상클래스를 상속받은 자식클래스 객체를 생성하여 사용한다. 
//3. 추상클래스를 부모클래스로 정의할때는 자식 클래스에 반드시 존재해야하지만, 
//자식클래스에서 구현할 기능이 너무 다르기 때문에 
//부모 클래스에서 공통적인 기능을 정의할 수 없을 때 구현을 강요하기 위해서 사용됨.
abstract class AbstractClass{
    //일반변수
    int age; 
    
    //일반 메소드
    void generalMethod() {
        System.out.println("generalMethod");
    }
    //추상메서드
    //정의부만 있고, 구현부가 없음.
    //추상메소드에는 abstract 예약어가 지정되어야 한다. 
    //추상메소드가 하나라도 정의된 클래스는 추상클래스가 된다. 
    //(일반클래스가 될 수 없다. )
    
    abstract void abstractMethod();
}
 
class AbstractClassChild extends AbstractClass{
    
    @Override
    void abstractMethod() {
        // TODO Auto-generated method stub
        System.out.println("구현");
    }
}
 
public class AbstractTest1 {
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        //1.
        //AbstractClass abstractClass = new AbstractClass(); //에러남.
        
        //2. 
        AbstractClassChild abstractClassChild = new AbstractClassChild();
        abstractClassChild.abstractMethod();
    }
}
cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
//추상클래스의 상속
//특정 추상클래스를 상속한 추상클래스를 상속하는 클래스가 일반클래스가 되려면
//상속구조에 있는 모든 추상클래스에 정의된 추상메소드를 구현해야 한다.
 
abstract class AbstractClass1{
    abstract void abstractMethod1();
}
abstract class AbstractClass2 extends AbstractClass1{
    //당연히 상속 받았으니까, abstractMethod1()가 포함된것이다.
    abstract void abstractMethod2();
}
class GeneralClass extends AbstractClass2{
    @Override
    void abstractMethod1() {
        // TODO Auto-generated method stub    
    }
    @Override
    void abstractMethod2() {
        // TODO Auto-generated method stub    
    }
}
public class AbstractTest2 {
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
    }
}
cs

 

예제1)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
//추상클래스도 다형성 제공.
abstract class Vehicle{ //운송수단
    abstract void transfer();
}
class Car extends Vehicle{
    @Override
    void transfer() {
        // TODO Auto-generated method stub
        //transfer 부모 속성을 Car에 맞게 구성하자. 
        System.out.println("차도로 나른다.");
    }
}
class Ship extends Vehicle{
    @Override
    void transfer() {
        // TODO Auto-generated method stub
        //transfer 부모 속성을 Ship에 맞게 구성하자. 
        System.out.println("수로로 나른다.");
    }
}
class Plane extends Vehicle{
    @Override
    void transfer() {
        // TODO Auto-generated method stub
        //transfer 부모 속성을 Plane에 맞게 구성하자. 
        System.out.println("하늘로 나른다.");
    }
}
 
class VehicleInfo { //운송수단의 정보를 제공하는 클래스
    void printTransferStyle(Vehicle vehicle) {
        vehicle.transfer(); //오버라이딩된 후속 메소드 //부모클래스
    }
}
 
public class AbstractTest3 {
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        VehicleInfo vehicleInfo = new VehicleInfo();
        vehicleInfo.printTransferStyle(new Car());
        vehicleInfo.printTransferStyle(new Ship());
        vehicleInfo.printTransferStyle(new Plane());
    }
    
}
 
cs

 


응용

<문제>

요구사항

첫번째 클래스, 추상클래스 : Ship_1
추상메소드 
int getPersonNumber() //배가 나를 수 있는 사람 수를 반환.
int getWeaponNumber() //배가 나를 수 있는 무기 수를 반환.
String getname() //배 이름 반환

구현 클래스(자식 클래스) 
Boat, Cruise

유틸클래스 : ShipUtil
메소드
public static void search(Ship s)

메인클래스 : ShipMain
출력결과 (search 2번 호출)
이름 : 영국보트
사람 수 : 90명
무기수 :  5정
이름: 미국전함
사람수: 200명
무기수 : 210정

 


<내가 한 것>

 

<출력결과값>  //유틸 클래스를 마음대로 만듬.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
abstract class Ship_1{ //운송수단
    abstract int getPersonNumber();
    abstract int getWeaponNumber();
    abstract String getName();
}
class Boat extends Ship_1{
    @Override
    String getName() {
        // TODO Auto-generated method stub
        return "영국보트";
    }
    @Override
    int getPersonNumber() {
        // TODO Auto-generated method stub
        return 90;
    }
    @Override
    int getWeaponNumber() {
        // TODO Auto-generated method stub
        return 5;
    }
}
class Cruise extends Ship_1{
    @Override
    String getName() {
        // TODO Auto-generated method stub
        return "미국전함";
    }
    @Override
    int getPersonNumber() {
        // TODO Auto-generated method stub
        return 200;
    }
    @Override
    int getWeaponNumber() {
        // TODO Auto-generated method stub
        return 210;
    }
}
class ShipInfo{ 
    void printShipInfo(Ship_1 ship) {
        System.out.println("이름: " + ship.getName());
        System.out.println("사람수: " +ship.getPersonNumber()+"명");
        System.out.println("무기수: " + ship.getWeaponNumber() +"정");
    }
}
public class ShipMain {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        ShipInfo shipinfo = new ShipInfo();
        shipinfo.printShipInfo(new Boat());
        shipinfo.printShipInfo(new Cruise());
    }
}
cs

부모 클래스 : Person2

자식 클래스 : President, Student, Employee1

 

위에 클래스를 응용하는 메인 클래스 : CastingTest

 

 

<부모 클래스>

1
2
3
4
5
6
7
8
9
10
11
12
public class Person2 {
 
    String name;
    int age;
    String addr;
    int x = 10;
    
    void showSleepingStyle() {
        System.out.println("일반사람들의 수면 스타일은 다양하다.");
    }
}
 
cs

 

<자식 클래스>

 

1
2
3
4
5
6
7
8
9
10
public class President extends Person2{
    String nation;
    int salary;
    
    @Override //show+ ctrl space
    void showSleepingStyle() {
        // TODO Auto-generated method stub
        System.out.println("대통령은 과도한 업무로 항상 수면시간이 부족하다.");
    }
}
cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class Student extends Person2{
    String schoolKind;
    int grade;
    
    @Override
    void showSleepingStyle() {
        // TODO Auto-generated method stub
        System.out.println("학생들의 수면스타일은 규칙적이다.");
    }
    
    //부모클래스에 정의되어있지않고 자식클래스에만 정의된 메소드
    public void study() {
        System.out.println("공부를 한다.");
    }
}
cs
1
2
3
4
5
6
7
8
9
10
public class Employee1 extends Person2 {
    String department;
    int x =30;
    
    @Override
    void showSleepingStyle() {
        // TODO Auto-generated method stub
        System.out.println("직장인은 잦은 회식으로 수면시간이 부족하다."); 
    }
}
cs

 

<메인클래스>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
public class CastingTest {
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        President president1 = new President();
        
        //1. 자식클래스 타입의 객체(객체를 가리키는 레퍼런드 값)를
        //부모클래스 타입의 레퍼런스 변수에 할당하면
        Person2 person2 = president1;
        
        //2. 부모 클래스 타입의 객체(객체를 가리키는 레퍼런드 값)를
        //자식클래스 타입의 레퍼런스 변수에 할당하면
        //President president2 = person2; //컴파일 오류남.
        //명시적인 캐스팅(down)이 필요하다.
        if(person2 instanceof President) {
            President president2 = (President)person2;
        }
        //President president2 = (President)person2;
        
        //3. 자바에서는 부모타입의 레퍼런스 변수가 자식클래스객체를 참조할 수 있지만
        //자식 클래스 타입의 레퍼런스 변수가 부모객체를 참조할 수는 없다. 
        Person2 person3 = new Person2();
        
        if(person2 instanceof President) {
            President president3 = (President)person2;
        }
        else {
            System.out.println("캐스팅 불가.");
        }
        
        //다운캐스팅을 할때는 다운캐스팅을 할 수 있는 지를 판단해야한다. 
        //이때 사용되는 연산자가 instanceof
        
        //4.자바에서 캐스팅을 부모클래스와 자식클래스 간에서만 가능하다. 
        Student student1 = new Student();
        //President president4 = (President)student1;
        
        //5. 부모 클래스에는 정의되지 않고 자식클래스에만 정의된 메소드는 부모클래스를 통해서 호출할 수 없다. 
        Person2 person4 = new Student();
        //person4.study(); //이럴 경우에 다운 메서드를 사용해야한다. 
        Student student2 = (Student)person4; 
        student2.study(); //"공부를 한다."
        
        //6. 부모 클래스에 정의된 클래스를 자식클래스에서 오버라이딩 했을때
        // 부모 클래스 타입의 레퍼런스 변수로 해당 메소드를 호출하면 항상 해당 객체에 오버라이딩된 객체가 출력된다.
        // 즉, 메소드의 다형성이 제공된다. 
        Person2 person5 = new Student();
        person5.showSleepingStyle();
        person5 = new President();
        person5.showSleepingStyle();
        person5 = new Employee1();
        person5.showSleepingStyle();
        
        //7. 변수
        //자바에서 호출되는 변수는 컴파일 타입에 결정됨. 
        //즉, 레퍼런스 변수 타입에 정의된 변수가 호출됨.
        Person2 person6 = new Employee1();
        System.out.println("person6.x = " + person6.x );
        
        Employee1 employee1 = (Employee1)person6;
        System.out.println("employell.x = " + employee1.x);
    }
}
cs

<결과값>

 


위에서 메인코드를 제외하고 나머지 코드를 이용해서 

다형성에 대해서 배우기

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
//다형성
 
//요구사항
//만약 사람중에 학생이면 study() 메소드를 호출하라. (instansof)
class PersonInfo {
    void printSleepingStyle(Person2 person) {
        if(person instanceof Student) {
            Student student = (Student)person;
            student.study();
        }
        person.showSleepingStyle();
    }
}
public class ParameterPloyTest1 {
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        PersonInfo personInfo = new PersonInfo();
 
        personInfo.printSleepingStyle(new Student());
        personInfo.printSleepingStyle(new President());    
        personInfo.printSleepingStyle(new Employee1());
    }
}
cs

<결과값>


<다형성 응용 코드>

가전제품 구매 관련

 

- 가전 부모 클래스 아래에 가전제품 자식 클래스 만들기

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
 
//가전제품 구매 
 
class Gajun{
    
    @Override
    public String toString() {
        // TODO Auto-generated method stub
        return "Gajun";
    }
}
 
class Tv extends Gajun{
    @Override
    public java.lang.String toString() {
        // TODO Auto-generated method stub
        return "Tv";
    }
}
 
class Computer extends Gajun{
    @Override
    public java.lang.String toString() {
        // TODO Auto-generated method stub
        return "Computer";
    }
}
class dryir extends Gajun{
    @Override
    public java.lang.String toString() {
        // TODO Auto-generated method stub
        return "dryir";
    }
}
 
class Buyer{
    //현재까지 주문한 목록을 보여줘라.
    Gajun[] gajunArray = new Gajun[3];
    int index = 0;
    void order(Gajun gajun) {
        gajunArray[index++=gajun;
        System.out.println(gajun + "를 주문했습니다.");
    }
    
    void showOrderList() {
        String orderItem = "";
        for (int i = 0; i < gajunArray.length; i++) {
            orderItem += (i == 0)? gajunArray[i] : "," +gajunArray[i];
        }
        System.out.println("주문목록 : " + orderItem);
    }
}
 
public class ParameterPloyTest2 {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Buyer buyer = new Buyer();
        buyer.order(new Tv());
        buyer.order(new Computer());
        buyer.order(new dryir());
        
        buyer.showOrderList();
    }
}
cs

<출력결과>

'풀스택 > java' 카테고리의 다른 글

자바_ Eclipse 단축키 모음  (0) 2022.04.19
자바_인터페이스 예제 Car  (0) 2022.04.19
자바 _ 상속관련 내용  (0) 2022.04.11
자바 메소드, 함수  (0) 2022.04.06
7일차_조건, 반복문 예제  (0) 2022.04.04

1. 이전채널 

 

<문제> 

MyTv2클래스에 getter setter 를 추가한 후  이전 채널(previous channel)이동하는 기능의 메서드를 추가해서 실행결과와 같은 결과를 얻도록 하시오.

[Hint] 이전 채널의 값을 저장할 멤버변수를 정의하라.

메서드명 : gotoPrevChannel

기 능 : 현재 채널을 이전 채널로 변경한다.

반환타입 : 없음

매개변수 : 없음

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
import java.util.Set;
 
class MyTv2{
    boolean isPowerOn;
    int channel;
    int volume;
    final int MAX_VOLUME = 100;
    final int MIN_VOLUME = 0;
    final int MAX_CHANNEL = 100;
    final int MIN_CHANNEL = 1;
    int prevChannel;  //이전 채널 값
    
    void gotoPrevChannel() {  //이전 채널로 되돌아간다.
        //현재 채널값에 이전채널값을 넣는다. 
        setChannel(prevChannel);
    }    
    
    public int getChannel() {
        return channel;
    }
 
    public void setChannel(int channel) {
        prevChannel = this.channel;   //채널값은 이전채널로 넣고
        //멤버변수를 지정안해주면 파라미터 변수가 와서 오류난다. 
        this.channel = channel;
    }    
}
 
public class Exercise {
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        MyTv2 t = new MyTv2();
        t.setChannel(10);
        System.out.println("CH:"+t.getChannel());
        t.setChannel(20);
        System.out.println("CH:"+t.getChannel());
        t.gotoPrevChannel();
        System.out.println("CH:"+t.getChannel());
        t.gotoPrevChannel();
        System.out.println("CH:"+t.getChannel());
    }
}
 
cs

 

<결과 값>

CH:10
CH:20
CH:10
CH:20

 

 

 

 

2. 배열 객체 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
import java.util.Iterator;
 
//문제 : Person 클래스 정의
//멤버변수 : name, age, address
 
class Person{
    String name;
    int age;
    String address;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public String getAddress() {
        return address;
    }
    public void setAddress(String address) {
        this.address = address;
    }
}
public class PersonUse {
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Person []pArr = new Person[3];
        
        for (int i = 0; i < pArr.length; i++) {
            pArr[i] = new Person(); //초기화.
            pArr[i].setName("홍길동" + (i +1));
            pArr[i].setAddress("경상북도 경산리 금락리" + (211+ i));
            pArr[i].setAge(22 + i);
        }
        for (int i = 0; i < pArr.length; i++) {
            System.out.println((i+1+ "번 : " + pArr[i].getName() + "," + pArr[i].getAge() + "," + pArr[i].getAddress());
        }
 
    }
 
}
 
cs

 

 

<출력 결과>

 

 

 

 

3. 도형 공식 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
import java.util.Scanner;
 
public class FigureFormula {
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner scanner = new Scanner(System.in);
        final double pi = 3.14;
        boolean stop = false;
        
        do {            
            System.out.println("***도형선택***");
            System.out.println("1. 삼각형");
            System.out.println("2. 원");
            System.out.println("3. 사다리꼴");
            System.out.println("4. 종료");
            System.out.println("선택 : ");
            int menuNumber = scanner.nextInt();
            
            switch(menuNumber) {
            case 1:
                System.out.println("삼각형 넓이");
                System.out.println("밑변 : ");
                int base = scanner.nextInt();
                System.out.println("높이 : ");
                int height = scanner.nextInt();
                double area = (base* height) /2;                
                System.out.printf("넓이 : %.2f%n%n", area);
                break;
                
            case 2:
                System.out.println("원 넓이");
                System.out.println("반지름 : ");
                int round = scanner.nextInt();
                area = pi * (round^2);
                System.out.printf("넓이 : %.2f%n%n", area);                
                break;
                
            case 3:
                System.out.println("사다리꼴 넓이");
                System.out.println("밑변 : ");
                base = scanner.nextInt();
                System.out.println("윗변 : ");
                int Upperside = scanner.nextInt();
                System.out.println("높이 : ");
                height = scanner.nextInt();                
                area = (height * (base+ Upperside))/2;
                System.out.printf("넓이 : %.2f%n%n", area);    
                break;
                
            case 4:
                System.out.println("프로그램 종료");
                stop = true;
                break;
            
            default:
                break;
            }
            
        }while(!stop);        
    }    
}
 
cs

<출력결과>

 

 

4. 비만도 계산기 

 

<문제>

 

1. Super클래스명 : HealthSuper

필드명(protected) : char gender(성별)

                    double tall (신장)

                    double weight(체중)

메소드 : input() - 성별, 신장, 체중입력받기

           output1() - 출력

2. Sub클래스 : HealthChild

필드명(private) : double s_weight (표준체중)

                  double fat (비만도)

                  String result (결과값)

메소드 : calculate() - 비만도 계산

           output2()  - 출력

====================================

표준체중계산법★

남성 : 표준체중 = (신장-100)*0.9

여성 : 표준체중 = (신장-100)*0.85

비만도 = 현재체중(Kg)/표준체중(Kg)*100

-------------------------------------------------------

90%이하  : 저체중               121-130% : 경도비만

91 -110% : 정상(표준체중)       131-150% : 중도비만

111-120% : 과체중               150%     : 고도비만

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
import java.util.Scanner;
 
class HealthSuper{
    char gender;
    double tall;
    double weight;
    
    void input() {
        
        Scanner scanner = new Scanner(System.in);
        System.out.println("---- 비만도 체크 ----");
        System.out.println("성별(M/F): ");
        gender = scanner.next().charAt(0);
        System.out.println("신장(Cm): ");
        tall = scanner.nextDouble();
        System.out.println("체중(kg): ");
        weight = scanner.nextDouble();        
    }
    
    void output1() {
        System.out.println("성별 : " +  gender);
        System.out.println("신장 : " +  tall);
        System.out.println("체중 : " +  weight);
    }
}
 
class HealthChild extends HealthSuper{
    double s_weight;
    double fat; //비만도
    String result;
    
    void calculate() {
        if(gender == 'M') {
            s_weight = (tall - 100*0.9;
        }
        else if(gender =='F') {
            s_weight = (tall - 100)  * 0.85;
        }
        
        fat = weight / s_weight * 100//비만도
        
        if(fat <=90) {
            result ="저체중";
        }
        else if(fat <= 110 ) {
            result ="정상(표준체중)";
        }
        else if(fat <= 120 ) {
            result ="과체중";
        }
        else if(fat <= 130 ) {
            result ="경도비만";
        }
        else if(fat <= 150 ) {
            result ="중도비만";
        }
        else {
            result ="고도비만";
        }                
    }    
    void output2() {
        System.out.println("당신의 비만도" + String.format("%.2f", fat) + "이고, " + result + "입니다.");
    }
}
 
public class ObesityCalculator {
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        HealthChild healthChild = new HealthChild();
        
        healthChild.input();
        healthChild.output1();
        healthChild.calculate();
        healthChild.output2();
    }
}
 
cs

<출력결과>

성별 입력시 소문자로 입력하면 오류난다. 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
//this()
//자기 자신 클래스의 다른 생성자를 호출
//여러개의 생성자에서 공통적으로 수행해야하는 작업을 특정 생성자에만 정의해서 중복코드를 제거 
 
//요구사항
//음료수 클래스를 정의한다.
//속성은 음료수명과 가격이 있다. 음료수명은 기본값이 물, 800원.
 
//this()를 사용하는 규칙
//1. this()는 생성자의 첫번째 실행문으로 사용되어야 한다. 
//2. this()는 recursive call 지원 안함. 
 
class Drink{
    String name;
    int price;
    
    public Drink() { //생성자는 그냥 공백에서 Ctrl+space -> enter
        // TODO Auto-generated constructor stub
        this("물, 800");    
    }
    public Drink(int price) { 
        // TODO Auto-generated constructor stub
        this("물, pirce");
        /*
         * this.name = "물"; this.price = price;
         */    
    }
    public Drink(String name, int price) { 
        // TODO Auto-generated constructor stub
        this("name, 800");    
    }
    public Drink(String name) { 
        // TODO Auto-generated constructor stub
        //this(name, price) //recursive call
        this.name = "name";
        this.price = price;        
    }
}
public class ThisConstructorTest {
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
 
    }
 
}
cs

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
//상속.
//상속은 물려주는 것. 
//부모 클래스를 확장한다.
//오버라이딩 = 재정의한다. 
 
class Parent{
    int parentVar;
    
    void ParentMethod() {
        System.out.println("parent method");
    }
}
 
class Child extends Parent{
    int childVar;
    
    void childMethod() {
        System.out.println("child method");
    }
}
class GrandChild extends Child{
    int grandVar;
    
    void grandMethod() {
        System.out.println("grand method");
    }
}
 
public class ExtendsTest {
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Child child = new Child();
        child.childMethod();
        child.ParentMethod();
        
        System.out.println("child.parentVar ="+ child.parentVar);
        System.out.println("child.childvar = " + child.childVar);
        GrandChild grandChild = new GrandChild();
        System.out.println("grandChild.parentVar = "+ grandChild.parentVar);
        System.out.println("grandChild.childVar = "+ grandChild.childVar);
        System.out.println("grandChild.grandVar = "+ grandChild.grandVar);
        
        grandChild.ParentMethod();
        grandChild.childMethod();
        grandChild.grandMethod();
    }
}
cs

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
//자바에서 부모클래스에 정의된 정의나 메소드를 자식 클래스에서 재정의하면
//부모 클래스에서 정의한 변수나 메소드는 은폐된다. 
class OverridingParent{
    int money =100;
    
    public void parentMethod() {
        System.out.println("parent method");
    }
}
 
class OverridingChild extends OverridingParent{
    String money = "500원";
    
    @Override //코드상에 설정을 할 수 있는 기능. 아래에 정의하는 메소드가 부모클래스에 정의되는 메소드를 
오버라이딩하는 메소드라는 의미.
    public void parentMethod() {
        // TODO Auto-generated method stub
        System.out.println("overriding method");
    }
}
public class OveerridingTest {
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        OverridingChild overridingChild = new OverridingChild();
        overridingChild.parentMethod();
        
        overridingChild.money ="100원";
    }
}


cs
 
   

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class Employee{
    
    String name;
    String department;
    int salary;
    
    String getInformation() {
        return "이름 : " + name + ", 부서: " + department + ", 급여: " + salary;
    }
}
 
class Salesman extends Employee{
    int commisstion;
    
    String getInformation() {
        /*//밑에 방법이 더 간단.
         * return "이름 : " + name + ", 부서: " + department + ", 급여: " + salary + "수당: " +
         * " commission";
         */        
        return super.getInformation() + ", 수당:" +commisstion;
    }    
}
cs

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
class Super {
    String name = "홍길동";
}
class Sub extends Super{
    String name = "김영희";
    
    String getLoclaName() {
        String name = "김철수";
        return name;
    }
    String getThisName() {
        String name = "김철수";
        return this.name; //위에 name이 있기에 this를 사용함. 로컬변수가 위에 있으므로 멤버변수를 사용하기 위해서 this사용.
    }
    String getSuperName() {
        String name = "김철수";
        return super.name; 
    }
}
public class ThisSuperTest {
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Sub sub = new Sub();
        System.out.println("sub.getLocalName = " + sub.getLoclaName() );
        System.out.println("sub.getThisName = " + sub.getThisName() );
        System.out.println("sub.getSuperName = " + sub.getSuperName() );
    }
}
cs

'풀스택 > java' 카테고리의 다른 글

자바_인터페이스 예제 Car  (0) 2022.04.19
자바_ 부모자식 클래스 상속 ~ 다형성까지  (0) 2022.04.14
자바 메소드, 함수  (0) 2022.04.06
7일차_조건, 반복문 예제  (0) 2022.04.04
2일차 _ 이클립스 다운방법  (0) 2022.03.29

+ Recent posts