yeahzzz
archive
yeahzzz
전체 방문자
오늘
어제
  • 분류 전체보기 (164)
    • Language (41)
      • Python (12)
      • JAVA (21)
      • C&C++ (8)
    • Algorithms (25)
      • programmers (9)
      • study log (16)
    • Problems & Solutions (14)
    • Major (29)
      • Data Structure & Algorithm (14)
      • Linux(Ubuntu) (9)
      • Security (2)
      • Linear Algebra (4)
    • FE (44)
      • Web(HTML5, CSS, JS) (5)
      • React & TS (26)
      • 코딩일기 (10)
    • BE (1)
      • Node.js (1)
    • Pytorch (8)
    • Server (2)

블로그 메뉴

  • 홈

공지사항

인기 글

태그

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
yeahzzz

archive

Language/JAVA

Constructor

2021. 7. 29. 20:58

-생성자 (constructor)

객체변수에 값을 무조건 설정해야만 객체가 생성될 수 있도록 강제하는 방법

메소드명 = 클래스명 & 리턴 자료형이 없는 메소드  

 

 

package Constructor;

public class DeepBlue2 extends Blue {

public DeepBlue2(String name) {
this.setName(name);
  }


생성자의 규칙
 1. 클래스명과 메소드명이 동일하다
 2. 리턴타입을 정의하지않음. 


생성자는 객체가 생성(=new라는 키워드로 객체가 만들어질 때.) 될 때 호출. 

public static void main(String[] args) {

DeepBlue2 deepBlue = new DeepBlue2("개강싫어");  //DeepBlue2의 새로운 객체 : deepBlue
//위에서 만든 생성자는 문자열을 필요로하는 생성자이므로 new키워드로 객체를 만들 때 문자열 꼭 전달해줘야함. 

-> public DeepBlue2(String name) {


System.out.println(deepBlue.name);
    }
}

//처음 출력값 : null ; why? 객체 변수에 아무런 값도 설정하지 않았기때문.
//코딩하기에 따라 객체 변수 name에 값을 설정할 수도, 아닐 수도 있음

//최종 출력값 : 개강싫어 

 

근데 굳이 이런거 왜 쓰는거임?

setName("DeepBlue")와 같은 필수적인 것들을 객체를 만들 때 제어할 수 있기 때문에 쓴댄다..

솔직히 아직 잘 안와닿음;;

 

-Default Constructor (초기 생성자)  : 한마디로 텅~빈 생성자 

public class DeepBlue extends Blue{

   public DeepBlue() {

   } //얘가 디폴트 생성자 

//얘 없으면 컴파일러가 지 알아서 디폴트 생성자 만듦. 

//근데 이렇게 내가 생성자 하나라도 만들면 추가 ㄴㄴ 함

 

   public void vlavla(){

       System.out.println(this.name + "ㅋㅋ");

   }

}

 

디폴트 생성자 만들면 new 사용해서 새로운 객체 만들어질 때 실행됨.


-생성자 오버로딩

 

package Constructor;

public class LightBlue extends Blue {

public LightBlue(String name) {
    this.setName(name);
 }

public LightBlue(int num) {
     if (num == 1){
       this.setName("one");
       } else if (num == 2) {
            this.setName("two");
         }
}

 

이렇게 여러개의 다른 생성자를 만들 수 있음. (이름 같아도 ㄱㅊ 입력항목만 다르면 됨. )

public static void main(String[] args) {

LightBlue lightBlue = new LightBlue("개강싫어");  
LightBlue what = new LightBlue(1);

System.out.println(lightBlue.name);
System.out.println(what.name);
     }
}

//output : 개강싫어 \n one

'Language > JAVA' 카테고리의 다른 글

다형성(오버라이드,오버로드)/객체 형변환/암묵적 형변환  (0) 2021.08.08
클래스, getter그리고setter, 접근한정자  (0) 2021.08.01
JAVA Inheritance  (0) 2021.07.28
Method  (0) 2021.07.27
클래스와 메소드  (0) 2021.07.27
    'Language/JAVA' 카테고리의 다른 글
    • 다형성(오버라이드,오버로드)/객체 형변환/암묵적 형변환
    • 클래스, getter그리고setter, 접근한정자
    • JAVA Inheritance
    • Method
    yeahzzz
    yeahzzz

    티스토리툴바