'Code/JAVA'에 해당되는 글 62건

Code/JAVA

인터페이스 예제

반응형

 

interface 는 다중 상속 가능

 

상속받았기 때문에 a1.disp()과 a1.disp1() 둘 다 사용 가능

Area와 Area1는 인터페이스이기 때문에 메소드 재정의 필

반응형

'Code > JAVA' 카테고리의 다른 글

중첩 클래스 예제  (0) 2019.06.18
중첩 클래스  (0) 2019.06.18
인터페이스_2  (0) 2019.06.18
인터페이스_1  (0) 2019.06.18
상속 예제_스택(Stack), 큐(Queue)  (0) 2019.06.18
Code/JAVA

인터페이스_2

반응형


다향성

하나의 타입에 대입되는 객체에 따라 실행 결과가 다양한 형태로 나옴 -> 상속, 인터페이스


- 자동 타입 변환(Promotion) : 구현 객체가 인터페이스 타입으로 변환되는 것  ex) 인터페이스 변수 = 구현 객체;

- 필드의 다형성 : 인터페이스:Tire
  Tire 구현 클래스1 Tire 구현 클래스2
    Car c = new Car();
  c.front = new 구현클래스1(); c.back = new 구현클래스2();

 

- 인터페이스 배열로 구현 관리

인터페이스를 배열로 선언하여 사용 가능 -> 각각의 인터페이스를 다른 객체로 선언하여 사용 가능

- 매개 변수의 다향성

매개값을 다양화하기 위해서 상속에서는 매개 변수를 부모 타입으로 선언하고 호출할 때는 자식 객체 대입

 


 

- 강제 타입 변환(casting) 

구현 객체가 인터페이스 타입으로 자동변환하면, 인터페이스에 선언된 메소드만 사용 가능
(상속시 부모에게 있는 메소드만 사용할 수 있는 것과 같은 맥락)

 

- 객체 타입 확인(intsanceof) 

구현 객체가 인터페이스 타입으로 변환되어 있는 경우에만 가능
ex) 인터페이스 a =  new 클래스1(); 클래스2 b = (클래스2) a;

 


 

- 인터페이스 상속

다른 인터페이스 상속 가능, 다중 상속 허용 

ex) public interface 하위인터페이스 extends 상위 인터페이스1, 상위 인터페이스2 {} 

-> 그럼 상위 1,2의 실체 메소드 구현 클래스에서 정의해줘야함

 

 

 

 



-<이것이 자바다1>. 한빛 미디어

 

반응형

'Code > JAVA' 카테고리의 다른 글

중첩 클래스  (0) 2019.06.18
인터페이스 예제  (0) 2019.06.18
인터페이스_1  (0) 2019.06.18
상속 예제_스택(Stack), 큐(Queue)  (0) 2019.06.18
추상화 예제  (0) 2019.06.18
Code/JAVA

인터페이스_1

반응형


인터페이스(interface)

- 객체의 사용 방법을 정의한 타입. 객체의 교환성을 높여주기 때문에 다형성을 구현하는데 중요한 역할

- 개발 코드와 객체가 서로 통신하는 접점 역할함. 개발 코드가 인터페이스의 메소드를 호출하면 인터페이스는 객체의 메소드 호출됨

- 개발 코드를 수정하지 않고 사용하는 객체를 변경할 수 있도록 하기 위해서 사용

- 하나의 객체가 아니라 여러 객체들과 사용이 가능하므로, 어떤 객체를 사용하냐에 따라 실행 내용과 리턴값 다를 수 있음  -> 다양화할 수 있음

 


인터페이스 선언     :      [public] interface 인터페이스명 {...}  

-> 모두 public 이기 때문에 더 낮은 접근 지정자 사용 불가

 

- 상수 필드

인터페이스 = 객체 사용 설명서. 런타임 시 데이터 저장하는 필드 선언 불가
 상수 필드 선언은 가능 -> 초기값 대입 필요   ex) 타입 상수명 = 값;

 

- 추상 메소드

객체가 가지고 있는 메소드를 설명한 것으로 호출할 때 어떤 매개 값 필요. 리턴 타입이 무엇인지만 알려줌 -> 실행부에서 객체 가지고 있음
ex) 타입 메소드명(매개변수, ...);

- 디폴트 메소드

인터페이스에 선언되지만 사실 객체가 가지고 있는 인스턴스 메소드 -> 인터페이스 확장해서 새로운 기능 추가하기 위해
ex) default 타입 메소드명(매개변수, ...){}

- 정적 메소드

디폴트 메소드와 달리 객체가 없어도 인터페이스만으로 호출 가능
ex) staticc 타입 메소드명(매개변수) {}

 

- 인터페이스 구현 

객체는 인터페이스에서 정의된 추상 메소드와 동일한 메소드 이름, 매개 타입, 리턴 타입을 가진 실체 메소드를 가지고 있어야 함

- 구현 클래스

보통의 클래스와 동일한데, 인터페이스 타입으로 사용 가능을 알리기 위해 implements 키워드 사용
ex) public class 클래스명 implements 인터페이스명
    인터페이스 변수 = 구현 객체;  ex) RemoteControl  rc= new Television();

- 익명 구현 클래스

소스 파일을 만들지 않고 구현 객체를 만들 수 있는 방법을 제공.
UI 프로그래밍 이벤트 처리/임시 작업 스레드 만들기 위해 주로 사용
ex) 인터페이스 변수 = new 인터페이스(){ //인터페이스에 선언된 추상 메소드의 실체 메소드 정의};

- 다중 인터페이스 구현 클래스

인터페이스는 다중 상속 가능  ex) implements 인터페이스 1, 인터페이스 2;
다중 인터페이스 구현 시, 구현 클래스는 모든 인터페이스의 추상 메소드에 대한 실체 메소드 정의해야 함 -> 안 하면 에러/추상 클래스(abstract)로 해야함

 

- 디폴트 메소드

인터페이스에 선언되지만, 인터페이스에서 바로 사용 불가
추상 메소드가 아닌 인스턴스 메소드이므로 구현 객체가 필요 ex) RemoteControl rc = new RemoteControl; rc.메소드();

- 정적 메소드

인터페이스에서 바로 호출 가능 ex) RemoteCotrol. 메서드();

 

 

-<이것이 자바다1>. 한빛미디어 

반응형

'Code > JAVA' 카테고리의 다른 글

인터페이스 예제  (0) 2019.06.18
인터페이스_2  (0) 2019.06.18
상속 예제_스택(Stack), 큐(Queue)  (0) 2019.06.18
추상화 예제  (0) 2019.06.18
상속 예제_extends, super, Override  (0) 2019.06.18
Code/JAVA

상속 예제_스택(Stack), 큐(Queue)

반응형

스택(Stack) : 대표적 자료구조로, 후입선출 (LIFO) 형태

큐(Queue) : 선입선출(FIFO) 형태, 스택의 먼저 들어온 데이터의 기다림을 해결하기 위해 나온 방식

 

1. 스택    2. 큐

1. push    2. pop

으로 사용자에게 자료구조 선택과 데이터 push와 pop을 선택받아 데이터 입력과 출력 보여줌

 

 

메모리 클래스를 스택과 큐에서 상속받아 사용 

 

메인 클래스 Mymain.class

import java.util.Scanner;

public class Mymain {

    public static void main(String[] args) {

        Scanner sc =new Scanner(System.in);

        Memory mem;                            //객체 생성

        MyStack ms = new MyStack();            //스택으로 객체 생성

        MyQueue mq = new MyQueue();            //큐로 객체 생성

        int index = 0, index1=0;

 

        while (true) {                        //반복

            System.out.println("1.stack 2.queue");

            index = sc.nextInt();            

            

            if(index == 1) {                //스택 사용 시 객체 스택으로 동적바인딩0

                mem = ms;

            }else if(index == 2) mem = mq;                    //큐 사용시 큐로 동적바인딩

            else break;

            

            while(true) {

                System.out.println("1.push   2.pop");

                index1 = sc.nextInt();

              

                if(index1 == 1) {                //푸쉬

                    mem.push(sc.nextInt());        //입력값 넘김

                }else if(index1 == 2) {            //팝

                    System.out.println(mem.pop());

                }else break;

            }

        }

    }

}

Colored by Color Scripter

 

 

반응형

'Code > JAVA' 카테고리의 다른 글

인터페이스_2  (0) 2019.06.18
인터페이스_1  (0) 2019.06.18
추상화 예제  (0) 2019.06.18
상속 예제_extends, super, Override  (0) 2019.06.18
배열 예제_Has-A  (0) 2019.06.18
Code/JAVA

추상화 예제

반응형

추상 클래스
 - 오직 상속을 목표로 사용
 - 객체를 만들 수 없음 -> 슈퍼 클래스임
 - 추상 메소드를 하나이상 가지고 있는 클래스
  
추상 메소드 : 바디가 없는 메소드 -> 이름만 있는 메소드
 - 강제성을 부여하고, 상속 개념으로 부모가 가지고 있어어야 하는데 정의를 할 수 없는 경우 사용
 - 강제성 부여하기 때문에 서브 클래스는 추상 메소드를 꼭 오버라이드 해야함
 - 안하면 상속받은 클래스도 추상 클래스화 되서 객체 생성 없음

 

반응형

'Code > JAVA' 카테고리의 다른 글

인터페이스_1  (0) 2019.06.18
상속 예제_스택(Stack), 큐(Queue)  (0) 2019.06.18
상속 예제_extends, super, Override  (0) 2019.06.18
배열 예제_Has-A  (0) 2019.06.18
배열 예제_이름과 성적 출력  (0) 2019.06.18
Code/JAVA

상속 예제_extends, super, Override

반응형

A 클래스 : 이름만

B 클래스 : 나이만

A를 B클래스에서 상속 받아 이름과 나이 출력하세요

 

 

 

 

 

public class A extends Object {

    private String name;

    public A() {

        System.out.println("A");

    }

    public A(String name) {

        this.name = name;

    }

    public String getName() {

        return name;

    }

    public void setName(String name) {

        this.name = name;

    }

}

Colored by Color Scripter

public class B extends A{

    private int age;

    public B() {

        super();    

        //부모의 생성자 호출 -> 자식 클래스의 첫번째 생성자에서 호출하도록 되어있다. 명시적으로 쓸 경우 default 없음

        System.out.println("B");

    }

    public B(String name, int age) {

        super(name);    

        this.age = age;

    }

    public int getAge() {

        return age;

    }

    public void setAge(int age) {

        this.age = age;

    }

    public String toString() {                            //@Override

        return getName()+getAge();        //재귀호출 -> 무한 루프 그렇기 때문에 멈출 수 있는 거 필요

    }

    public static void main(String[] args) {

        B bb = new B("superman",1000);

        System.out.println(bb);                            //bb = bb.toString 

    }

}

Colored by Color Scripter

반응형

'Code > JAVA' 카테고리의 다른 글

상속 예제_스택(Stack), 큐(Queue)  (0) 2019.06.18
추상화 예제  (0) 2019.06.18
배열 예제_Has-A  (0) 2019.06.18
배열 예제_이름과 성적 출력  (0) 2019.06.18
배열 예제_2차원 배열  (0) 2019.06.18
Code/JAVA

배열 예제_Has-A

반응형

ver.3 has-a 관계 이용하여 학생 정보 출력 

 

has- a : 포함 관계. ~는 ~을 가지고 있다. 포함하고 있다는 의미

 

사용자에게 학생 수 입력 받기

입력 받은 수 만큼 반복하여 학생 이름, 성적 입력받기

전체 학생과 성적, 합계, 평균 출

 

 

 

 

 

 

 

 

 

 

ArrayHasA 클래스는 학생 Student를 포함하고 있어 Has-a 관계가 성립된다.

 

import java.util.Scanner;

 

public class ArrayHasA {

    

    StudentScore []student;                            //StudentScore 클래스를 배열로 받아옴

    int index;                                        //입력한 학생 인원 수 받음

    

    ArrayHasA(int index) {                            //생성자 : 인덱스로 받음

        student=new StudentScore[index];            //

        this.index = index;

        loading();

    }

    

    void loading() {                                

        for(int i = 0; i <student.length;i++) {

            student[i]=new StudentScore();        //생성자 부르자 마자 인덱스 값으로 StudentSccore 객체 생성

            student[i].setInput();                //학생 정보 입력

            student[i].getAvg();                //평균 구하기

        }

        

    }

    

    void setStudent(StudentScore []ae) {

        this.student = ae;

    }

    

    void setIndex(int index) {

        this.index = index;

    }

    

    StudentScore[] getStudent() {

        return this.student;

    }

    

    int getIndex() {

        return this.index;

    }

        

    void printer(){//출력하기 위한 메소드

        for (int i = 0; i < student.length; i++) {                    //student index 크기만큼 돌림

            System.out.print(student[i].name +"\t");            

            for (int j = 0; j < student[i].score.length; j++) {        //StudentScore 의 인덱스 크기만큼 돌림

                System.out.print(student[i].score[j]+"\t");

            }

            

            System.out.print(student[i].avg);

            System.out.println();

        }    

        

        

    }

 

    public static void main(String[] args) {

        // TODO Auto-generated method stub

        

        Scanner sc = new Scanner(System.in);

        System.out.println("몇명의 학생 정보를 입력하시겠습니까? ");

        ArrayHasA ah = new ArrayHasA(sc.nextInt());        //입력할 학생 정보 scanner로 받음

        

        System.out.println("-------------성적 출력---------------");        

        

        ah.printer();                                    //성적 출력 메소드 활용

    }

 

}

 

 

class StudentScore {

    

    String name;                    //이름

    int []score;                    //점수(국어, 영어, 수학, 총점)

    float avg;                        //평균

    

    StudentScore(){                    //생성자

        score=new int[4];            

    }

    

    StudentScore(String name, int []score, float avg){

        this.score = score;            //초기화

        this.name = name;            //이름

        this.avg = avg;                //평균

    }

    

    public void setName(String name) {

        this.name = name;

    }

    

    public void setScore(int[] arr) {

        this.score=arr;

    }

    

    public void setAvg(float avg) {

        this.avg = avg;

    }

    

    public String getName() {

        return this.name;

    }

    

    public int[] getScore() {

        return this.score;

    }

    

    public float getAvg() {                //float 형태로 평균 구함

        this.avg = (float)score[3]/3;

        return avg;

    }

    

    void setInput() {                        //사용자 이름과 성적 입력 메소드

        Scanner sc = new Scanner(System.in);

        

        System.out.print("이름을 입력하세요 : ");

        this.name = sc.next();

    

        System.out.println("성적을 입력하세요 (국어, 수학, 영어 성적 순):");

        score[3]=0;

        

        for(int i = 0; i < score.length-1;i++) {        //for 반복하여 숫자 입력

            this.score[i]= sc.nextInt();

            this.score[3+= score[i];

        }

        

        

    }

}

    

 

 

Colored by Color Scripter

반응형

'Code > JAVA' 카테고리의 다른 글

추상화 예제  (0) 2019.06.18
상속 예제_extends, super, Override  (0) 2019.06.18
배열 예제_이름과 성적 출력  (0) 2019.06.18
배열 예제_2차원 배열  (0) 2019.06.18
배열 예제_숫자 출력  (0) 2019.06.18
Code/JAVA

배열 예제_이름과 성적 출력

반응형

ver.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
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
import java.util.Scanner;
 
public class ArrayExam3 {
    
    String name;                    //이름
    int []score;                    //점수(국어, 영어, 수학, 총점)
    float avg;                        //평균
    
    ArrayExam3(){
        score=new int[4];
    }
    
    ArrayExam3(String name, int []score, float avg){
        this.score = score;    //초기화
        this.name = name;            //이름
        this.avg = avg;                //평균
    }
    
    public void setName(String name) {
        this.name = name;
    }
    
    public void setScore(int[] arr) {
        this.score=arr;
    }
    
    public void setAvg(float avg) {
        this.avg = avg;
    }
    
    public String getName() {
        return this.name;
    }
    
    public int[] getScore() {
        return this.score;
    }
    
    public float getAvg() {
        this.avg = (float)score[3]/3;
        System.out.println(avg);
        return avg;
    }
    
    int getTotal(int []arr) {        //전체 총점 메소드
        return this.score[3= arr[0]+arr[1]+arr[2];        
    }
    
    void setInput() {                //사용자 이름과 성적 입력 메소드
        Scanner sc = new Scanner(System.in);
        
        System.out.print("이름을 입력하세요 : ");
        this.name = sc.next();
    
        System.out.println("성적을 입력하세요 (국어, 수학, 영어 성적 순):");
        
        for(int i = 0; i < score.length-1;i++
            this.score[i]= sc.nextInt();
        
        getTotal(score);
        
    }
    
 
    public static void main(String[] args) {
        // field, 생성자,
        //ver1. 한 사람 성적 처리 프로그램
        //이름, 국어, 영어, 수학 -> 입력(Scanner)
        //총점과 평균 -> 연산
        //이름 국어 영어 수학 총점 평균 출력
        //필드 : String name, int []score(생성자에서 배열 만들기), float arg;
        
        ArrayExam3 a = new ArrayExam3();        //객체 생성
        a.setInput();                            //scanner로 사용자 정보 입력받기
        a.getAvg();                                //평균 구하기
        
        System.out.println("----------------------성적출력--------------------------");
        
        System.out.print(a.name +"\t");
        for(int i = 0; i < a.score.length;i++)
            System.out.print(a.score[i]+"\t");
        System.out.print(a.avg);
        
        
    }
 
}
 
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4f; text-decoration:none">Colored by Color Scripter
 

 

반응형

'Code > JAVA' 카테고리의 다른 글

상속 예제_extends, super, Override  (0) 2019.06.18
배열 예제_Has-A  (0) 2019.06.18
배열 예제_2차원 배열  (0) 2019.06.18
배열 예제_숫자 출력  (0) 2019.06.18
상속_2(다형성, 추상 클래스)  (0) 2019.06.18
Code/JAVA

배열 예제_2차원 배열

반응형

ver.2 2차원 배열을 이용하여 다음과 같이 숫자 출력하세요 

다차원 배열 : n행 m열로 1차원 이상의 배열을 의미

 

이차원의 배열은 for 반복문을 두번 돌려야함

행과 열을 구분하여 돌려야하기 때문에!

 

 

 

 

 

반응형

'Code > JAVA' 카테고리의 다른 글

배열 예제_Has-A  (0) 2019.06.18
배열 예제_이름과 성적 출력  (0) 2019.06.18
배열 예제_숫자 출력  (0) 2019.06.18
상속_2(다형성, 추상 클래스)  (0) 2019.06.18
상속_1(상속, override, final)  (0) 2019.06.18
Code/JAVA

배열 예제_숫자 출력

반응형

ver.1 1부터 5까지 배열에 저장 후 출력하세요.

 

 

배열 선언 후 배열 안에 1부터 5까지 넣고 차례로 출력하는 배열 만들기 

 

 

 

 

 

 

 

반응형

'Code > JAVA' 카테고리의 다른 글

배열 예제_이름과 성적 출력  (0) 2019.06.18
배열 예제_2차원 배열  (0) 2019.06.18
상속_2(다형성, 추상 클래스)  (0) 2019.06.18
상속_1(상속, override, final)  (0) 2019.06.18
클래스_5(패키지)  (0) 2019.06.18
 [ 1 ]  [ 2 ]  [ 3 ]  [ 4 ]  [ 5 ]  [ 6 ]  [ 7 ] 

푸터바

태그

알림

이 블로그는 구글에서 제공한 크롬에 최적화 되어있고, 네이버에서 제공한 나눔글꼴이 적용되어 있습니다.

카운터

  • Today :
  • Yesterday :
  • Total :