클래스 기초

Class_basic1

package chapter08.classPart;

class Car {
	// 맴버 변수 ,속성, 필드 (..클래서에 만들어진 변수)
	String name;
	boolean gasoline;
	//기본생성자 //다른 생성자 없으면 생략 가능(명시적 생성자...) //별도의 생성자가 존재하지 않으면 무조건 1개는 필요하니까 기본생성자는 공짜로 만들어준다
	Car() {
		System.out.println("기본 생성자 호출");
	}
	//명시적 생성자
	Car(String name1, boolean gasoline1){
		name = name1;
		gasoline = gasoline1;
		System.out.println("명시적 생성자 호출");
	}
	//맴버 메서드
	void run() {
		if(gasoline) {
			System.out.println("부릉 부릉");
		} else {
			System.out.println("덜컹 덜컹");
		}
	}
	void stop() {
		System.out.println("끼이익");
	}
}

public class Class_basic1 {

	public static void main(String[] args) {
		Car korando = new Car(); //여기서 실행되어질때 생성자 먼저 호출 //파라미터 없음 기본생성자 호출
		korando.name = "코란도C"; 
		korando.gasoline =false;
		System.out.println(korando.name);
		korando.run();
		
		Car equus = new Car("에쿠스", true); //파라미터 있음 명시적 생정자 호출
		System.out.println(equus.name);
		equus.run();
	}

}

<출력결과>

기본 생성자 호출 //Car korando = new Car(); 이떄 호출 됨. 코란도C 덜컹 덜컹 명시적 생성자 호출 에쿠스 부릉 부릉

Class_basic2

package chapter08.classPart;

class Human {
	int age;
	String name;
	Human() {
		System.out.println("기본 생성자 호출");
	}
	Human(int age2,String name2){
		age = age2;
		name = name2; 
		System.out.println("명시적 생성자 호출");
	}
	void inttro() {
		System.out.println("안녕," + age + "살 " + name + "이야" );
	}
}

public class Class_basic2 {

	public static void main(String[] args) {
		// 기본생성자로 인스턴스 생성
		//명시적 생성자로 인스턴스 생성
		
		Human hi1 = new Human();
		hi1.age = 20;
		hi1.name = "김다희";
//		System.out.println(hi1.age);
//		System.out.println(hi1.name);
		hi1.inttro();
		
		Human hi2 = new Human(90,"김다희");
//		System.out.println(hi2.age2);
//		System.out.println(hi2.name2);
		hi2.inttro();
		
	}

}

<출력 결과>

기본 생성자 호출 안녕,20살 김다희이야 명시적 생성자 호출 안녕,90살 김다희이야

생성자

   생성자 규칙
	-생성자는 이름이 클래스와 같다
	-클래스 샐성시 생성자를 넣지 않아도 기본 생성자가 생성된다
	=부모클래스는 자식클래스보다 먼저 생성되어야 한다
	-리턴타입을 갖지 않는다
	=명시적 생성자가 있으면 기본 생성자는 별도로 생성해야 한다

User 클래스

package chapter08.classPart;

public class User {
	String name;
	int age;
	//자동완성 > 우클릭 source >generate constructor ...
	
	public User() {
		super();
	}
	
	public User(String name1) {
		super();
		name = name1;
	}
	
	
	public User(String name2, int age2) {
		super();
		name = name2;
		age = age2;
	}

	
	public void userInfo() {
		System.out.println("이름 " + name + ", 나이: " + age);
	}

}

super();는 자바에서 클래스의 생성자에서 부모 클래스의 생성자를 호출

자바에서 모든 클래스는 기본적으로 Object 클래스를 상속받음.

Object 클래스는 모든 자바 클래스의 최상위 클래스

⇒ 각 클래스는 Object 클래스의 멤버들을 상속받아 사용할 수 있음

Construnctor1

package chapter08.classPart;

public class Construnctor1 {

	public static void main(String[] args) {

		User user1 = new User();
		user1.userInfo();
		
		User user2 = new User("홍길동");
		user2.userInfo();
		
		User user3 = new User("이순신", 70);
		user3.userInfo();
		
	}

}

<출력 결과>