영보의 SystemOut.log

[JAVA]추상클래스/인터페이스 개념/인터페이스 예제 ② 본문

Language/JAVA

[JAVA]추상클래스/인터페이스 개념/인터페이스 예제 ②

영보로그 2020. 7. 16. 18:09
반응형

 

 
인터페이스 

특징  - 추상클래스의 일종(추상클래스 단점을 보완) 
 - 미완성된 클래스 => 자신이 메모리 할당을 할 수 없다(구현한 클래스를 통해서 메모리 할당) 
 - 추상 클래스(단일 상속), 인터페이스(다중 상속) 

쓰임  - 모든 메소드가 abstract => 선언만 가능 
      JDK 1.8 => default 메소드를 이용해서 메소드 구현이 가능 
 - 변수 ( 추상클래스 : 맴버변수, 인터페이스 : 상수형변수)
      int a; ==> int a=10; 
 interface A 
          { 
             //변수 
              int a=10; ==========> JVM (public static final int a=10) 
                                         
             //메소드 
             void aaa(): ========> JVM (public static final int aaa();)                          
              int bbb(); 
            } 
         
         interface A 
          { 
               void aaa(); 
          } 

          => 구현 
         class B implements A 
          { 
              void aaa(){ 
               } 
          }          

 - 인터페이스에 선언된 모든 메소드는 public이다 

 - 인터페이스에 선언된 모든 변수는 public이다(상수) 

 

 


 
오버라이딩

(1) 상속관계
 (2) 메소드명이 동일
(3) 매개변수 동일
(4) 리턴형이 동일
(5) 접근지정어 → 확대, 축소 (X)

 

 

 
    상속

관계 인터페이스 → 인터페이스
extends 
인터페이스 클래스
implements 
 클래스 인터페이스
: 인터페이스는 클래스를 상속받을 수 없다
error 
예제  -   interface A 
          K L 
 -   interface B extends A 
          P => K L 
 -  class C implements B 
          P 
          K 
          L 구현한다 
예제2   interface A
  interface B
           class c implement A,B 다중 상속     
             
  interface A
           class B
           class c extends B implement A,B 다중 상속     
              인터페이스는 모든 메소드가 구현이 안된다

 

 

 


자바에서 지원한 인터페이스


1. Window (javax.swing)

2. 데이터베이스 연결
    ActionListener : 버튼, 메뉴, text에서 엔터
      = actionPerformed()
   MouseListener : 마우스 관련, 전체 해당, JTable, JTree, JLabel
     = mouseClicked()
     = mouseReleased()
     = mousePressed()
     = mouseEntered()
     = mouseExited()
   MouseMotionListener
     = mouseMoved()
     = mouseDragged()
   KeyListener : 키보드
     = keyPressed()
     = keyReleased()
     = keyTyped()
   FocusListener()  
     = focusLost()
     = focusGained()
   ItemListener
     = ComboBox, JList
     = itemStateChanged(

     Connection
     Statement
     ResultSet

 

 

 

* 예제 코드

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
package com.sist.inter;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.table.*;
 
public class MainClass5 extends JFrame{
    JTable table; //모양
    DefaultTableModel model; //테이블 안에 있는 데이터 제어 => MV
    public MainClass5()
    {
        String[] col= {"","이름""성별""주소"};
        Object[][] row=new Object[0][4];
        
        model=new DefaultTableModel(row,col){
 
            @Override 
            public boolean isCellEditable(int row, int column) {
                // TODO Auto-generated method stub
                return false;
            }//상속없이 override 된 클래스다 
 
            @Override
            public Class<?> getColumnClass(int columnIndex) {
                // TODO Auto-generated method stub
                return getValueAt(0, columnIndex).getClass();
            }
        };
        
        //table에 첨부
        table=new JTable(model);
        table.setRowHeight(100);
        JScrollPane js=new JScrollPane(table);
        
        //윈도우에 추가
        add("Center",js);
        setSize(350450);
        
        //데이터 추가
        Object[] data= {new ImageIcon("c:\\javaDev\\a.png"),"전지현","여자","서울"};
        model.addRow(data);
        model.addRow(data);
        model.addRow(data);
        setVisible(true);
    }
    public static void main(String[] args) {
        new MainClass5();
    }
}
cs

 

* 실행 화면

반응형