ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • JAVA 생성자와 접근제한자
    back-end&DB/Java 2023. 5. 19. 14:36
    728x90

    1.생성자

     

    1.1 생성자의 특징

    - 생성자는 하나 이상 선언되어야 함

    - 생성자 이름은 클래스 이름과 동일

    - 생성자는 리턴 타입을 지정 할 수 없다.

    - 생성자는 new를 통해 객체를 생성할 때만 호출됨

    - 생성자는 메소드다

     

    개발자는 생성자를 정의하지 않으면 자동으로 기본 생성자가 정의됨

    컴파일러에 의해 자동 생성

    기본 생성자를 디폴트 생성자(default constructor)라고도 함

    만약 default 생성자만 존재하고 default에 아무런 기능이 없을 경우 생략이 가능함

     

     

    public class Student { // 클래스의 이름과 동일
    
    	String name;
    	String number;
    	int age;
        
    public Student(String name, String number, int age) { // 클래스의 이름과 동일
    		
    		this.name = name;          	//리턴 타입은 없다.
    		this.number = number; 		//리턴 타입은 없다.
    		this.int = age;			//리턴 타입은 없다.
    	}
        // default 생략이 가능하다.
    aaa.name = "에이군";
    aaa numner = "20230001";
    aaa age = 20;
    
    Student aaa = new Student("에이군","20230001",20,);

     

     

    2. 생성자 종류

     

    - public

    모든 클래스 파일에서 사용이 가능하다.

     

    -protected

    같은 클래스 같은 패키지에서 불러오는것이 가능하다.

     

    - default 

    같은 클래스 같은 패키지에서 불러오는 것이 가능하다.

    default 는 클래스에서 접근 제한자 생략이 가능하다. 

    String default_string;
    	
    	void method_test() {	
    	}

     

    - pruvate

    본인 클래스 파일에서만 접근이 가능

    private int hp;
    private int attack;
    private int defense;
    private int speed;
    private String type;

     

    제어자 같은 클래스 같은 패키지 자손 클래스 전체
    public
    protected  
    default    
    private      

     

     

    - this

    생성자의 이름으로 클래스이름 대신 this를 사용

    한 생성자에서 다른 생성자를 호출할 때는 반드시 첫 줄에서만 호출이 가능

    public Pokemon(int hp, int attack, int defense, int speed, String type) {
    		this.hp = hp;
    		this.attack = attack;
    		this.defense = defense;
    		this.speed = speed;
    		this.type = type;
    	}

     

     

    3. 캡슐화(Encapsulation)

    외부에서 공개된 메소드를 통해 접근이 가능

     

    	public int getHp() {
    		return hp;
    	}
    	
    	public void setHp(int hp) {
    		this.hp = hp;
    	}

     

     

    4. 생성자 예제

    - Calculator 클래스를 작성하세요

    Calculator클래스의 필드
    접근지정자 타입 변수명 설명
    private int num1 첫 번째 정수
    private int num2 두 번째 정수
    Calculator클래스의 메소드
    이름 리턴타입 매개변수 설명
    calculator X int 변수이름, 
    int 변수이름
    2개의 매개변수를 가진
    생성자로 num1, num2
    sum int - num1 과 num2를 더한 값
    sub int - num1 과 num2를 뺀 값
    mul int - num1 과 num2를 곱한 값
    div double - num1 과 num2를 나눈 값
    public class Calculator {
    
    	private int num1;
    	private int num2;
    
    	public Calculator(int num1, int num2) {
    		this.num1 = num1;
    		this.num2 = num2;
    	}
    	public int sum() {
    		return num1 + num2;
    	}
    	public int sub() {
    		return num1 - num2;
    	}
    	public int mul() {
    		return num1 * num2;
    	}
    	public double div() {
    		return (double)num1/num2;
    	}
    }
    public class Calculator_main {
    
    	public static void main(String[] args) {
    		
    		Calculator cal = new Calculator(75, 5);
    
    		int sum_result = cal.sum();
    		System.out.println(sum_result);
    		...
    	}

     

     

    5. 메소드 오버로딩

     

    메소드 이름이 같아야 한다.

    매겨변수의 개수 또는 타입이 달라야 한다.

     

    - 오버로딩의 장점

    메소드의 이름 낭비 방지

    같은 메소드에 여러종류의 매개변수를 받을 수 있음

    public class Calculator {
    
    	private int num1;
    	private int num2;
    
    	public Calculator(int num1, int num2) {
    		this.num1 = num1;
    		this.num2 = num2;
    	}
    
    	public Calculator(int num1) { //  << 오버로딩
    		this.num1 = num1;
    	}
        
        	public int square() {
    		return num1 * num1;
    	}
    Calculator cal = new Calculator(75, 5);
    	int sum_result = cal.sum();
    	System.out.println(sum_result);
    	System.out.println(cal.sub());
           
    Calculator cal2 = new Calculator(12);
    	System.out.println(cal2.square());
    728x90

    'back-end&DB > Java' 카테고리의 다른 글

    JAVA MVC패턴  (0) 2023.05.22
    JAVA 상속과 오버라이딩(Overriding)  (0) 2023.05.19
    JAVA 객체 지향 프로그래밍(OOP)  (0) 2023.05.18
    JAVA Array와 ArrayList  (0) 2023.05.17
    JAVA 메소드  (0) 2023.05.16
Designed by Tistory.