-
생성자이론 || 오버로딩 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); } }
기본이론들 외우고 예제에 많이 써서 익숙해지기
'과거⚰️' 카테고리의 다른 글
숫자합치기 답없음 (0) 2020.12.16 테트리스 회전 (0) 2020.12.15 클래스 배열 3, 4 || 학생컨트롤러 || 고객관리 || 문자열 1, 2, 답없음 (0) 2020.12.13 클래스배열 중복숫자금지 || 클래스배열 이론1 || 클래스배열 이론2 || 클래스배열 자리예매 || 클래스배열 틱택토 || 클래스배열 로또한세트 || 클래스 경마게임 || 클래스배열 회원가입 || 클래.. (0) 2020.12.12 메서드 ATM ||오버로딩 || this. (0) 2020.12.11