Small Grey Outline Pointer Java :: Class(생성자)
본문 바로가기
Dev./java

Java :: Class(생성자)

by sso. 2022. 5. 23.
package day12;

public class Car {
	int price; //전역변수
	String color;
	String brand;
	
	//생성자(메서드의 기능과 같다)
	
	
	public Car(int price, String color, String brand) {
		this.price = price; //그 객체의 price 내가 외부에서 받은 값을 초기화 하는 것
		this.color = color;
		this.brand = brand;
	}
	
	double speedUp(double speed){
		speed++;
		return speed;
	}
	

	double speedDown(double speed){
		speed--;
		return speed;
	}
	
	void showInfo() {
		System.out.println(this);
		System.out.println("브랜드 : "+brand+ "\n색상: "+color+ "\n가격: " +price+ "만원");
	}
	
	
	public static void main(String[] args) {
		//객체화
		//인스턴스 변수
		//클래스명() : 기본 생성자 
		//클래스를 선언하면 자동으로 선언되는 생성자, 내가 임의로 생성자를 선언하면 이게 기본 생성자가 된다
		Car momCar = new Car(9000, "Black", "Benz"); //생성자는 메서드가 아니지만, 기능은 같다
		momCar.showInfo();
//		Car daddyCar = new Car();
//		Car myCar = new Car();
		
//		momCar.brand="Benz";
//		momCar.color="Black";
//		momCar.price=9000;
//		
//		momCar.showInfo();
//		System.out.println(momCar);
//		
//		daddyCar.showInfo();
		
	}
	
}

 

 

초기화 할 필드 선택창

Alt + Shift + s > o 생성자 단축키

초기화 할 필드 선택 후 Generate를 누르면 자동으로 생성 된다

 

 

 


 

 

오버로딩(Over loading)
매개변수의 개수와 타입은 다르지만 이름이 같은 메서드를 여러 개 정의하는 것

 

 


메서드에서 두 정수의 덧셈 등등을 만든다고 하면,

package day12;

public class OverLoading {
	//오버로딩이란 기능 매개변수의 개수가 다르다. 이름이 같더라도 구분점이 생긴다
	//이름을 같게 해도 컴파일러는 전달한 값의 개수로 구분할 수 있다
	void add(int num1, int num2) {
		System.out.println("두 정수의 합");
		System.out.println(num1+num2);
	}
	
	void add(int num1, int num2, int num3) {
		System.out.println("세 정수의 합");
		System.out.println(num1+num2+num3);
	}
	
	void add(double num1, double num2) {
		System.out.println("두 실수의 합");
		System.out.println(num1+num2);
	}
	
	public static void main(String[] args) {
		OverLoading o = new OverLoading();
		o.add(10, 20);
		o.add
	}
}

add로 만들어진 메서드 3개가 구분 된다

 

 

package day12;

public class OverLoading {
	//오버로딩의 기능? 매개변수의 개수가 다르거나 이름이 같더라도 구분점이 생긴다
	//이름을 같게 해도 컴파일러는 전달한 값의 개수로 구분할 수 있다
	void add(int num1, int num2) {
		System.out.println("두 정수의 합");
		System.out.println(num1+num2);
	}
	
	void add(int num1, int num2, int num3) {
		System.out.println("세 정수의 합");
		System.out.println(num1+num2+num3);
	}
	
	void add(double num1, double num2) {
		System.out.println("두 실수의 합");
		System.out.println(num1+num2);
	}
	
	public static void main(String[] args) {
		OverLoading o = new OverLoading();
		o.add(10, 20);
		o.add(10.5, 20.9);
		o.add(1, 2, 3);
	}
}

두 정수의 합
30
두 실수의 합
31.4
세 정수의 합
6

 

 

 

 

예제

package day12;
//강아지 고양이 돼지 객체화 하기
//생성자 사용해서 초기화 하기 생성자 단축키 Alt + Shift + s > o

public class Animal {
	String name;
	int age;
	double weight;
	String feed;
	String sound;
	
	public Animal() {}	//오버로딩 
	
	public Animal(String name, int age, double weight, String feed,String sound) {
		this.name = name;
		this.age = age;
		this.weight = weight;
		this.feed = feed;
		this.sound = sound;
	}
	void getSound(){
		System.out.println(sound);
	}
	
	void eat() {
		System.out.println(name + "이(가)" +feed+ "을(를) 먹는중.");
	}
	
	void sleep() {
		System.out.println(name + "이(가) 자는중.");
	}
	
	
	public static void main(String[] args) {
		Animal cat = new Animal();
		Animal dog = new Animal();
		Animal pig = new Animal("배꼽", 4, 35.2, "곡식", "꿀꿀");
		
		pig.eat();
		pig.getSound();
		pig.sleep();
	}
}

배꼽이(가)곡식을(를) 먹는중.
꿀꿀
배꼽이(가) 자는중.

728x90

'Dev. > java' 카테고리의 다른 글

Java 항공 관리 프로그램  (0) 2022.05.26
Java :: 접근 권한 제어자  (0) 2022.05.23
Java :: Class(객체화)  (0) 2022.05.22
Java 메서드 2  (0) 2022.05.22
Java 2차원 배열로 매장별 매출 구하기  (0) 2022.05.21

댓글