영업 뛰다가 온, 남들과 조금 다른 주니어 개발자

영업하면서 배운 고객 중심적 사고, 비즈니스 통찰력 등을 총동원해서 서비스를 개발하고 있습니다. 영업 경험이 개발하는 과정에서 큰 역할을 하더라구요, 즐겁게 개발하고 있습니다!

카테고리 없음

[JAVA] 생성자의 역할과 생성자 및 메서드 오버로딩 이해를 위한 예제. 코드로 확인하기

브윗 2024. 8. 30. 15:03
package com.test.oop;
//[생성자의 역할]과, [생성자+method 오버로딩] 이해를 위한 예제.


class A {  //주로 멤버변수, 생성자, method 이 순서로 두는게 좋아. (클래스 = 멤버변수+생성자+method)

    int a = 3;
    int b = 4;

    public A(){  //이런 생성자를 클래스 안에 정의해줘야 함. 단, A() 괄호 안에 인자가 없잖아. 그러면 굳이 안적어줘도 컴파일러가 자동으로 컴파일 시 생성. 
        
        //생성자를 만듦으로써 멤버변수가 30, 40으로 각각 바뀜. 멤버변수를 초기화.
        a = 30; 
        b = 40;
        
        //인스턴스 생성 시 어떤 명령을 수행.
        System.out.println("클래스 A 인자 없는 생성자를 통해 인스턴스생성");
    }
    //만약 괄호 안에 인자가 있으면 무조건 생성자 만들어줘야 함.



    public A(int a, int b){ //인자를 넣은 생성자를 하나 더 생성 가능! 이렇게 하나의 클래스 안에 여러개의 생성자를 만들 수 있음.
        this.a = a; //멤버변수를 지칭하는 법은 this.a --> 인자로 받아온 값을 멤버변수에 넣어주는 것.
        this.b = b;

        System.out.println("클래스 A 인자가 두 개인 생성자를 통해 인스턴스생성");
    }

    public int aa(){
        return a+b;
    }

    public int cal(int a, int b){
        return a*b;
    }


    public int cal(int a, int b, int c){ //위와 똑같은 이름의 method 인데에도 인자 수가 다르니까 에러 안남.
        return a+b+c;
    }
}


public class Exam02 {
    public static void main(String[] args){
        A a = new A(); //A class 생성자를 통해 인스턴스를 생성하고, 생성된 인스턴스의 주소를 a 에 할당.

        A a1 = new A(100, 200);

        System.out.println("인자가 없는 생성자를 통해 초기화된 멤버변수의 합 = "+a.aa());
        System.out.println("인자가 2개인 생성자를 통해 초기화된 멤버변수의 합 = "+a1.aa());
        
        System.out.println(a.cal(3, 4));
        System.out.println(a.cal(6,4,5));
        
    }
}