public class Outter {
    // 인스턴스 멤버 내부 클래스 
    // Outter 객체가 생성된 다음에만 사용할 수 있는 내부 클래스
    // Outter 객체의 모든 멤버(필드, 메소드)를 사용할 수 있다.
    public class Inner1 {
    
    }
    // 정적 내부 클래스
    // Outter객체 생성 없이 사용할 수 있는 내부 클래스
    // Outter의 정적 멤버(정적 필드, 정적 메소드)만 사용할 수 있다.
    public static class Inner2 {
    
    }

    public void method() {
        int x = 10;
        x = 20;
        // 로컬 내부 클래스
        // 메소드가 실행되는 동안에만 사용할 수 있는 내부 클래스
        // Outter객체의 모든 멤버를 사용할 수 있다.
        // ...
        class Inner3 {
            public void m1() {
                System.out.println(x);
            }
        }
    }
}
​

 

public interface Iterator {

    boolean empty();
    int next();

}​

 

public class List {

    int[] data = {10, 20, 30, 40, 50};

    public Iterator getIterator() {
        Iterator it = new ListIterator();
        return it;

    }
    class ListIterator implements Iterator {
        int[] clone;
        int position;
    
        public ListIterator() {
            clone = data;
            position = 0;
        }
            
        public int next() {
            int number = 0;
            number = clone[position];
            position++;

            return number;
        }

        public boolean empty () {
            if (position < clone.length) {
                return false;
            } else {
                return true;
            }
        }
    }
}
​

 

public class IteratorApp {
    public static void main(String[] args) {
        List list = new List();
        Iterator iterator = list.getIterator();

        System.out.println(iterator.empty());
        System.out.println(iterator.next());
        System.out.println(iterator.empty());
        System.out.println(iterator.next());
        System.out.println(iterator.empty());
        System.out.println(iterator.next());
        System.out.println(iterator.empty());
        System.out.println(iterator.next());
        System.out.println(iterator.empty());
        System.out.println(iterator.next());

        System.out.println(iterator.empty());    
    }
}
​

 

public class Account {
    private int no;
    private String name;
    private int balance;

    public int getNo() {
        return no;
    }

    public String getName() {
        return name;
    }

    public int getBalance() {
        return balance;
    }

    public static class AccountBuilder {
        private int no;
        private String name;
        private int balance;

        public AccountBuilder no(int no) {
            this.no = no;
            return this;
        }

        public AccountBuilder name(String name) {
            this.name = null;
            this.name = name;
            return this;
        }

        public AccountBuilder balance(int balance) {
            this.balance = 0;
            this.balance = balance;
            return this;
        }

        public Account build() {
            Account account = new Account();
            account.no = no;
            account.name = name;
            account.balance = balance;
            return account;
        }
    }
}
​

 

public class AccountApp {
    public static void main(String[] args) {
        Account.AccountBuilder builder = new Account.AccountBuilder();
        
        builder.no(10).name("홍길동");
        Account account1 = builder.build();
        System.out.println("번호 : " + account1.getNo());
        System.out.println("이름 : " + account1.getName());
        System.out.println("잔고 : " + account1.getBalance());

        builder.no(20).balance(230000);
        Account account2 = builder.build();
        System.out.println("번호 : " + account2.getNo());
        System.out.println("이름 : " + account2.getName());
        System.out.println("잔고 : " + account2.getBalance());

        builder.no(40).name("김유신").balance(430000);
        Account account3 = builder.build();
        System.out.println("번호 : " + account3.getNo());
        System.out.println("이름 : " + account3.getName());
        System.out.println("잔고 : " + account3.getBalance());

        Account account4 = builder.no(50).name("강감찬").balance(5000000).build();
        System.out.println("번호 : " + account4.getNo());
        System.out.println("이름 : " + account4.getName());
        System.out.println("잔고 : " + account4.getBalance());
    }
}
​

 

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class MyWindow extends JFrame {

    JTextArea area = new JTextArea();
    JTextField field = new JTextField();
    JButton btn = new JButton("전송");

    public MyWindow() {
        setTitle("연습 프로그램");
        
        JPanel panel = new JPanel(new BorderLayout());
        add(new JScrollPane(area), BorderLayout.CENTER);
        add(panel, BorderLayout.SOUTH);
        panel.add(field, BorderLayout.CENTER);
        panel.add(btn, BorderLayout.EAST);
        
        ActionListener listener = new ActionListener() {
            public void actionPerformed(ActionEvent event) {
                String text = field.getText();
                area.append(text);
                area.append("\n");
                field.setText("");
                field.requestFocus();
            }
        };
        field.addActionListener(listener);
        btn.addActionListener(listener);
    
        setBounds(100, 100, 300, 300);
        setVisible(true);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        field.requestFocus();
    }

    public static void main(String[] args) {
        new MyWindow();
    }
}
​

'자바 > oop6' 카테고리의 다른 글

PhotoShop, Mouse, Member.java  (0) 2019.06.07

+ Recent posts