ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 생성자이론 || 오버로딩 1, 2 || 캡슐화1, 2 || 래퍼클래스
    과거⚰️ 2020. 12. 14. 14:18
     package day055;
    
    /*
     * # 생성자(constructor)
     * 1. 생성자는 반드시 클래스 이름과 같아야 한다.
     * 2. 생성자는 new 클래스명(); 이때 호출된다.
     * 3. 생성자는 인스턴스 변수를 초기화 시킬 목적으로 사용한다.
     * 4. 생성자를 정의하지 않으면, 자바 컴파일러가 자동으로 기본 생성자를 만든다.
     * 5. 기본생성자란, 매개변수에 아무것도 없는 생성자를 의미한다.
     * 6. 생성자를 정의하면 기본 생성자는 자동으로 만들어지지 않는다.
     * 7. 생성자는 리턴타입을 가지지 않고 return도 사용하지 않는다.(메서드와의 차이점)
     */
    
    class Ex01 {
        int a;	// 인스턴스 변수
        int b;
        int c;
    
        Ex01() {
            a = 10;
            b = 20;
            c = 30;
            System.out.println("생성자 호출");
        }
    }
    
    public class Day05501생성자이론 {
        public static void main(String[] args) {
    
            //           이때 기본 생성자가 실행된다.
            Ex01 e = new Ex01();
            // 생성자는 기본 값을 저장하고 싶을 때 사용한다.(특별히 필요하지는 않다.)
    
        }
    
    }
    
    
    package day055;
    
    /*
     * # 생성자 오버로딩
     * 1. 생성자도 메서드이기 때문에 같은 이름으로 여러개 만들 수 있다.
     * 2. 단, 메서드와 마찬가지로 매개변수(parameter)를 서로 다르게 해야한다.
     */
    
    class Product {
        String name;
        int price;
    
        Product() {
            name = "박스";
            price = 1000;
            System.out.println("기본 생성자");
        }
    
        Product(String name, int price){
            this.name = name;
            this.price = price;
        }
    
        void printProduct() {
            System.out.println(name + " : " + price);
        }
    }
    
    public class Day05502생성자오버로딩1 {
        public static void main(String[] args) {
    
            //               기본 생성자 호출
            Product p1 = new Product();
            p1.printProduct();
    
            //               생성자 오버로딩
            Product p2 = new Product("빈박스", 2000);
            p2.printProduct();
    
        }
    }
    
    
    
    package day055;
    
    class Fruit {
        String name;
        int price;
    
        // 기본 생성자
        Fruit(){}
    
        // 생성자 오버로딩(overloading)
        Fruit(String name, int price){
            this.name = name;
            this.price = price;
        }
    
        void setData(String name, int price) {
            this.name = name;
            this.price = price;
        }
    
        void printData() {
            System.out.println(name + "(" + price + "원)");
        }
    }
    
    public class Day05503생성자오버로딩2 {
        public static void main(String[] args) {
    
            // # 인스턴스 변수 초기화방법 3가지
            Fruit apple = new Fruit();
            // # 방법1) .으로 접근해 초기화
            apple.name = "사과";
            apple.price = 1000;
            apple.printData();
    
            Fruit banana = new Fruit();
            // # 방법2) 메서드를 만들어 초기화
            banana.setData("바나나", 2000);
            banana.printData();
    
            // # 방법3) 생성자를 활용해 초기화
            Fruit melon = new Fruit("멜론", 3000);
            melon.printData();
    
    
        }
    }
    
    
    
    package day055;
    
    class Ex02 {
        // 접근제어자 : public, private
        // 클래스 멤버변수(클래스 영역에 선언된 변수)에 public이나 private을 붙일 수 있다.
        private int a;
        private int b;
        // 접근제어가 없는 것을 default 라고 부른다.
        int c;
    }
    
    public class Day05504캡슐화1 {
        public static void main(String[] args) {
    
            Ex02 e = new Ex02();
    
            // 1. private을 붙인 변수는 클래스 내부에서만 사용이 가능하다.
            // 2. 다른 클래스에서는 사용할 수 없다.
            // e.a = 10;	// 에러
            // e.b = 20;	// 에러
    
            e.c = 30;
    
        }
    }
    
    
    package day055;
    
    class Student {
        private String name;
        private int age;
    
        Student(String name, int age){
            setName(name);
            setAge(age);
        }
    
        void setName(String name) {
            this.name = name;
        }
    
        void setAge(int age) {
            this.age = age;
        }
    
        String getName() {
            return name;
        }
    
        int getAge() {
            return age;
        }
    
    }
    
    public class Day05505캡슐화2 {
        public static void main(String[] args) {
    
            Student hgd = new Student("홍길동", 11);
    
            System.out.println(hgd.getName());
            System.out.println(hgd.getAge());
    
        }
    }
    
    
    package day055;
    
    /*
     * # 래퍼 클래스(wrapper class)
     * - 래퍼 클래스란, 기본 자료형을 클래스로 만들어 놓은 것을 의미한다.
     * [기본형]          [래퍼 클래스]
     * byte             Byte
     * short            Short
     * int              Integer
     * long             Long
     * float            Float
     * double           Double
     * char             Character
     * boolean          Boolean
     */
    
    class MyInteger {
        int num;
    
        MyInteger(int num) {
            this.num = num;
        }
    
    }
    
    public class Day05506래퍼클래스 {
        public static void main(String[] args) {
    
            int x = 10;
            Integer y = new Integer(10);
    
            float a = 10.1f;
            Float b = new Float(10.1);
    
            double q = 10.1;
            Double w = new Double(10.11);
    
            MyInteger r = new MyInteger(100);
    
        }
    }
    
    
    
    
    
    

    기본이론들 외우고 예제에 많이 써서 익숙해지기

Designed by Tistory.