[KOSTA JAVA] #Day 5 & 6 (Access modifier, Static, Final, Exam Quiz)


「これがジャワ」の学習記録
本を読みながら内容を整理する.これがjavaコミュニティ:https://cafe.naver.com/thisisjava

1.finalフィールドと定数(静的final)


1-1. finalフィールド

  • 最終値を持つフィールド=値を変更できないフィールド
  • finalフィールドの一次初期化方法
  • public class Person {
        final String nation = "Korea";
        final String ssn;
        String name;
    
        public Person(String ssn, String name) {
            this.ssn = ssn;
            this.name = name;
        }
    }

    1-2. 定数(静的final)

  • 定数:静的finalフィールド
  • finalフィールドとは、各オブジェクトが持つ不変のインスタンスフィールドを指す.
  • 定数(static final)は、各オブジェクトが持つものではなく、メソッドドメインでクラス別に管理される不変の静的フィールドです.パブリックデータとしても使用できます.
  • 定数名はすべて大文字です.
  • 他の単語が結合されている場合は、接続を使用します.
  • 2.アクセス制限


    これは、
  • クラスおよびクラスの構成メンバーのアクセスを制限する役割です.
  • の役割は、クラスを他のパッケージでクラスを許可しないように制限し、ジェネレータをクラスからオブジェクトを生成しないように制限し、フィールドとメソッドを特定のフィールドとメソッドを非表示に処理するように制限することです.
  • アクセス制限タイプ
  • アクセス制限は、アクセスできないクラス共通クラス、フィールド、作成者、メソッド保護なしフィールド、作成者、メソッドサブクラスではない他のパッケージに属するクラスdefaultクラス、フィールド、作成者、メソッドが他のパッケージに属するクラスprivateフィールド、作成者、メソッドのすべての外部クラスに適用されます.

    2-1. クラスのアクセス制限

  • default:クラス宣言時にpublicを省略し、他のパッケージは使用できません.
  • public:他の開発者が使用するためにライブラリクラスを作成する場合に便利です.

  • 2-2. 作成者アクセスの制限

  • ジェネレータが有するアクセス制限は、呼び出すかどうかを決定する.
  • 2-3. フィールドとメソッドのアクセス制限

  • クラス内、パッケージ内、パッケージ間で相互に宣言されます.
  • 1.finalフィールドと定数(静的final)


    1-1. finalフィールド

  • 最終値を持つフィールド=値を変更できないフィールド
  • finalフィールドの一次初期化方法
  • public class Person {
        final String nation = "Korea";
        final String ssn;
        String name;
    
        public Person(String ssn, String name) {
            this.ssn = ssn;
            this.name = name;
        }
    }

    1-2. 定数(静的final)

  • 定数:静的finalフィールド
  • finalフィールドとは、各オブジェクトが持つ不変のインスタンスフィールドを指す.
  • 定数(static final)は、各オブジェクトが持つものではなく、メソッドドメインでクラス別に管理される不変の静的フィールドです.パブリックデータとしても使用できます.
  • 定数名はすべて大文字です.
  • 他の単語が結合されている場合は、接続を使用します.
  • 2.アクセス制限


    これは、
  • クラスおよびクラスの構成メンバーのアクセスを制限する役割です.
  • の役割は、クラスを他のパッケージでクラスを許可しないように制限し、ジェネレータをクラスからオブジェクトを生成しないように制限し、フィールドとメソッドを特定のフィールドとメソッドを非表示に処理するように制限することです.
  • アクセス制限タイプ
  • アクセス制限は、アクセスできないクラス共通クラス、フィールド、作成者、メソッド保護なしフィールド、作成者、メソッドサブクラスではない他のパッケージに属するクラスdefaultクラス、フィールド、作成者、メソッドが他のパッケージに属するクラスprivateフィールド、作成者、メソッドのすべての外部クラスに適用されます.

    2-1. クラスのアクセス制限

  • default:クラス宣言時にpublicを省略し、他のパッケージは使用できません.
  • public:他の開発者が使用するためにライブラリクラスを作成する場合に便利です.

  • 2-2. 作成者アクセスの制限

  • ジェネレータが有するアクセス制限は、呼び出すかどうかを決定する.
  • 2-3. フィールドとメソッドのアクセス制限

  • クラス内、パッケージ内、パッケージ間で相互に宣言されます.
  • 質問の回答を確認します(Java 6章です)


    13番目、14番目、15番目の質問(メンバーとメンバー・サービスおよびメンバー・サービスExample)

    package com.kosta.Quiz06;
    //13.
    public class Member {
        String name;
        String id;
        String password;
        int age;
    
        //14.
        Member(String name, String id) {
            this.name = name;
            this.id = id;
        }
    }
  • ブラブラブラブラ
  • package com.kosta.Quiz06;
    //13.
    public class MemberService {
        boolean lgoin(String id, String password) {
            boolean result;
    
            if (id.equals("hong")) result = true;
            else result = false;
    
            if (password.equals("12345")) result = true;
            else result = false;
    
            return result;
        }
    
        void logout(String id) {
            System.out.println(id + "님이 로그아웃 되었습니다.");
        }
    }
  • ブラブラブラブラ
  • package com.kosta.Quiz06;
    //15.
    public class MemberServiceExample {
        public static void main(String[] args) {
            MemberService memberService = new MemberService();
            boolean result = memberService.lgoin("hong", "12345");
            if(result) {
                System.out.println("로그인 되었습니다.");
                memberService.logout("hong");
            }else {
                System.out.println("id 또는 password가 올바르지 않습니다.");
            }
        }
    }
  • ブラブラブラブラ
  • 16、17題(PrinterExample)

    package com.kosta.Quiz06;
    
    public class Printer {
    //    16.
    //    public void println(int i) {
    //        System.out.println(i);
    //    }
    //    public void println(boolean b) {
    //        System.out.println(b);
    //    }
    //    public void println(double d) {
    //        System.out.println(d);
    //    }
    //    public void println(String s) {
    //        System.out.println(s);
    //    }
    
        //    17. (static으로 정적메소드로 만들어서 객체 생성없이 접근 가능하게 하기)
        static public void println(int i) {
            System.out.println(i);
        }
    
        static public void println(boolean b) {
            System.out.println(b);
        }
    
        static public void println(double d) {
            System.out.println(d);
        }
    
        static public void println(String s) {
            System.out.println(s);
        }
    }
  • ブラブラブラブラ
  • package com.kosta.Quiz06;
    
    public class PrinterExample {
        public static void main(String[] args) {
    //        16.
    //        Printer printer = new Printer();
    //        printer.println(10);
    //        printer.println(true);
    //        printer.println(5.7);
    //        printer.println("홍길동");
    
    //        17. (객체 선언하지 않고 메소드 호출)
            Printer.println(10);
            Printer.println(true);
            Printer.println(5.7);
            Printer.println("홍길동");
        }
    }
  • blahblah
  • 第18題(ShopServiceとShopServiceExample)

    package com.kosta.Quiz06;
    //18.
    public class ShopService {
        static ShopService shopService;
        private ShopService() { }
        static ShopService getInstance() {
            if(shopService == null) shopService = new ShopService();
            return shopService;
        }
    }
  • blahblah
  • package com.kosta.Quiz06;
    //18.
    public class ShopServiceExample {
        public static void main(String[] args) {
            ShopService obj1 = ShopService.getInstance();
            ShopService obj2 = ShopService.getInstance();
    
            if(obj1 == obj2) {
                System.out.println("같은 ShopService 객체입니다.");
            }else {
                System.out.println("다른 ShopService 객체입니다.");
            }
        }
    }
  • ShopServiceExample
  • 19、20番問題(Account&CountExample&BankApplication)

    package com.kosta.Quiz06;
    
    //19 & 20.
    public class Account {
        static final int MIN_BALANCE = 0;
        static final int MAX_BALANCE = 1000000;
    
        private String ano;
        private String owner;
        private int balance;
    
        public Account() {
        }
    
        public Account(String ano, String owner, int balance) {
            this.ano = ano;
            this.owner = owner;
            this.balance = balance;
        }
    
        public String getAno() {
            return ano;
        }
    
        public void setAno(String ano) {
            this.ano = ano;
        }
    
        public String getOwner() {
            return owner;
        }
    
        public void setOwner(String owner) {
            this.owner = owner;
        }
    
        public int getBalance() {
            return balance;
        }
    
        public void setBalance(int balance) {
            if (balance > MIN_BALANCE && balance < MAX_BALANCE)
                this.balance = balance;
        }
    
        @Override
        public String toString() {
            return ano + "  " + owner + "  " + balance;
        }
    }
  • ブラブラブラブラ
  • package com.kosta.Quiz06;
    //19.
    public class AccountExample {
        public static void main(String[] args) {
            Account account = new Account();
    
            account.setBalance(10000);
            System.out.println("현재 잔고: " + account.getBalance());
    
            account.setBalance(-100);
            System.out.println("현재 잔고: " + account.getBalance());
    
            account.setBalance(2000000);
            System.out.println("현재 잔고: " + account.getBalance());
    
            account.setBalance(300000);
            System.out.println("현재 잔고: " + account.getBalance());
        }
    }
  • ブラブラブラブラ
  • package com.kosta.Quiz06;
    
    import java.util.Scanner;
    
    public class BankApplication {
        static Scanner sc = new Scanner(System.in);
        static Account[] accountArray = new Account[100];
    
        public static void main(String[] args) {
            boolean run = true;
    
            while (run) {
                System.out.println("------------------------------------------");
                System.out.println("1.계좌생성 | 2.계좌목록 | 3.예금 | 4.출금 | 5.종료");
                System.out.println("------------------------------------------");
                System.out.print("선택> ");
    
                int selectNo = sc.nextInt();
    
                if (selectNo == 1) {
                    createAccount();
                } else if (selectNo == 2) {
                    accountList();
                } else if (selectNo == 3) {
                    deposit();
                } else if (selectNo == 4) {
                    withraw();
                } else if (selectNo == 5) {
                    run = false;
                }
            }
            System.out.println("프로그램 종료");
        }
    
        //계좌생성하기
        private static void createAccount() {
            String ano;
            String owner;
            int balance;
    
            System.out.println("------");
            System.out.println("계좌생성");
            System.out.println("------");
    
            System.out.print("계좌번호: ");
            ano = sc.next();
            System.out.print("계좌주: ");
            owner = sc.next();
            System.out.print("초기입금: ");
            balance = sc.nextInt();
    
            for (int i = 0; i < accountArray.length; i++) {
                if (accountArray[i] == null) {
                    accountArray[i] = new Account(ano, owner, balance);
                    System.out.println("결과: 계좌가 생성되었습니다.");
                    break;
                }
            }
        }
    
        //계좌목록보기
        private static void accountList() {
            System.out.println("------");
            System.out.println("계좌목록");
            System.out.println("------");
            for (Account account : accountArray) {
                if (account != null) {
                    System.out.println(account.toString());
                }
            }
        }
    
        //예금하기
        private static void deposit() {
            System.out.println("------");
            System.out.println("예금");
            System.out.println("------");
            System.out.print("계좌번호: ");
            String ano = sc.next();
            System.out.print("예금액: ");
            int depositAmount = sc.nextInt();
    
            Account account = findAccount(ano);
    
            if(account == null) {
                System.out.println("계좌가 없습니다.");
            }
    
            if (account != null) {
                account.setBalance(account.getBalance() + depositAmount);
            }
            System.out.println("예금이 성공되었습니다.");
        }
    
        //출금하기
        private static void withraw() {
            System.out.println("------");
            System.out.println("출금");
            System.out.println("------");
            System.out.print("계좌번호: ");
            String ano = sc.next();
            System.out.print("출금액: ");
            int depositAmount = sc.nextInt();
    
            Account account = findAccount(ano);
    
            if(account == null) {
                System.out.println("계좌가 없습니다.");
            }
    
            if (account != null) {
                account.setBalance(account.getBalance() - depositAmount);
            }
            System.out.println("출금이 성공되었습니다.");
        }
    
        //Account 배열에서 ano와 동일한 Account 객체 찾기
        private static Account findAccount(String ano) {
            for (Account account : accountArray) {
                if (account.getAno().equals(ano)) {
                    return account;
                }
            }
            return null;
        }
    }
  • blblbl