1 2 3 4 5 6 7 | public class Animal { String name; public void setName(String name) { this.name = name; } } | cs |
1 2 3 4 5 | public class Dog extends Animal { public void sleep() { System.out.println(this.name+" zzz"); } } | cs |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | public class HouseDog extends Dog { public void sleep() { System.out.println(this.name+" zzz in house"); } public void sleep(int hour) { System.out.println(this.name+" zzz in house for " + hour + " hours"); } public static void main(String[] args) { HouseDog houseDog = new HouseDog(); houseDog.setName("happy"); houseDog.sleep(); houseDog.sleep(3); } } | cs |
1 2 3 4 | public static void main(String[] args) { HouseDog dog = new HouseDog(); System.out.println(dog.name); } | cs |
name 객체에는 아무 값도 없기 떄문에 null값이 나온다.
name이라는 객체 변수에 값을 무조건 설정해야만 객체가 생성되도록 하려면 생성자를 이용하면된다.
1 2 3 | public HouseDog(String name) { this.setName(name); } | cs |
생성자의 규칙에는
1. 클래스명과 메소드명이 동일하다.
2. 리턴타입을 정의하지 않는다.
생성자를 만들어 준다면 입력값을 적어준 것 처럼
1 | HouseDog dog = new HouseDog("happy"); // 생성자 호출 시 문자열을 전달해야 한다. | cs |
와 같이 입력값을 정해줘야 객체를 생성할 수 있다.
생성자를 사용했을 때 얻게 되는 것은 객체 생성을 제어할 수 있다는 것이다.
원래 클래스를 생성하면 자동적으로 default 생성자가 생성되어 있는데,
집접 생성자를 만들어 준다면 jvm에서 만들어 주지않기 때문에
직접 default 생성자를 만들어 주어야한다.
생성자를 사용한 예시로는 오버로딩이 있는데
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 | public class HouseDog extends Dog { public HouseDog(String name) { this.setName(name); } public HouseDog(int type) { if (type == 1) { this.setName("yorkshire"); } else if (type == 2) { this.setName("bulldog"); } } public void sleep() { System.out.println(this.name+" zzz in house"); } public void sleep(int hour) { System.out.println(this.name+" zzz in house for " + hour + " hours"); } public static void main(String[] args) { HouseDog happy = new HouseDog("happy"); HouseDog yorkshire = new HouseDog(1); System.out.println(happy.name); System.out.println(yorkshire.name); } } | cs |
오버로딩은 입력 항목이 다른 생성자를 여러 개 만들 수 있는는것을 말한다.
-메소드 덮어쓰기-
부모 메소드에 있는 것을 자식에 메소드를 새로 생성해주어서 우선적으로 쓰는것
생성자 오버로딩 다른 입력값을 받는 생성자를 만들어서 입력값에 따라 다른 메소드 실행
728x90
'풀스택 > Java다시 복습 처음부터' 카테고리의 다른 글
java 복습 3-5(객체지향 프로그래밍) - 인터페이스 (0) | 2019.06.06 |
---|---|
java 복습 3-3(객체지향 프로그래밍) - 상속, 오버라이딩 (0) | 2019.06.06 |
java 복습 3-3(객체지향 프로그래밍) - Call by value (0) | 2019.06.06 |
java 복습 3-2(객체지향 프로그래밍) - 메소드 (0) | 2019.06.04 |
java 복습 3-1(객체지향 프로그래밍) - class (0) | 2019.06.04 |
댓글