네트워크 캠퍼스/JAVA

240104 클래스 예제, 패키지 예제

gayeon_ 2024. 1. 11. 16:18

Cat 클래스 예제

package class_;

public class Cat {
	// 이름, 나이, 품종, 털색
	public String name;
	public int age;
	public String kind;
	public String color;
	
	// 클래스 정의용 클래스파일 내부 메서드는 static을 붙이지 않습니다.
	// 이제 변수와 메서드가 같은 소속이므로, 레퍼런스 주소를 붙이지 않아도 됩니다.
	public void showCatInfo() {
		System.out.println("고양이의 이름: " + name);
		System.out.println("고양이의 나이: " + age);
		System.out.println("고양이의 품종: " + kind);
		System.out.println("고양이의 색상: " + color);
	}

}
package class_;

public class CatMain {

	public static void main(String[] args) {
		// 고양이 2마리 생성
		Cat c1 = new Cat();
		c1.name = "야옹이";
		c1.age = 2;
		c1.kind = "페르시안";
		c1.color = "흰색";
		
		Cat c2 = new Cat();
		c2.name = "춘식이";
		c2.age = 5;
		c2.kind = "코숏";
		c2.color = "치즈";
		
		c1.showCatInfo();
		c2.showCatInfo();

	}

}

 

 

 

메인함수의 c1.showCatInfo(); 호출 시 메서드를 수행하게 된다.

c2도 동일하게 진행된다.

 

22번 라인인 메인함수 닫는 중괄호가 수행될 시 스택에서 메인 함수 지역이 사라지고 스택과 힙의 연결이 끊어지면서

 

 

 

 

 

힙 공간도 비워진다. (프로그램 종료)

 

 

 

 

 

BasketballPlayer 클래스 예제

package class_;

public class BasketballPlayer {
	
	public String name; // 농구선수의 이름
	public int height; // 키
	public int age; // 나이
	public int salary; // 연봉
	
	
	// showInfo(BasketballPlayer소속이므로 굳이 해당 단어를 적지 않아도 구분 가능)
	// 를 작성해주시고, 호출시 위의 4개 변수를 콘솔에 찍도록 해주세요.
	public void showInfo() {
		System.out.println("이름: " + name);
		System.out.println("키: " + height);
		System.out.println("나이: " + age);
		System.out.println("연봉: " + salary);
	}
	
	public void dunkShoot() { // 덩크슛하기 기능
		if(height > 195) {
			System.out.println("덩크슛 성공!");
		} else {
			System.out.println("덩크슛 실패...");
		}
	}

}
package class_;

public class BasketballPlayerMain {

	public static void main(String[] args) {
		// 농구선수 2명을 만들어주시고 정보를 조회하는 코드를 작성해주세요.
		BasketballPlayer b1 = new BasketballPlayer();
		b1.name = "농선";
		b1.height = 190;
		b1.age = 20;
		b1.salary = 1000000000;
		
		BasketballPlayer b2 = new BasketballPlayer();
		b2.name = "구수";
		b2.height = 200;
		b2.age = 220;
		b2.salary = 2000000000;
		
		b1.showInfo();
		b1.dunkShoot();
		
		b2.showInfo();
		b2.dunkShoot();

	}

}

 

함수를 호출할 때 해당 함수의 지역이 열렸다가 리턴하며 닫힌다.

 

 

사용자가 필수 필드에 값을 채워야만 하도록 생성자를 클래스 내부에 정의한 예제

package class_;

public class BasketballPlayer {
	
	public String name; // 농구선수의 이름
	public int height; // 키
	public int age; // 나이
	public int salary; // 연봉
	
	// 생성자는 리턴타입이 없고 클래스명과 동일한 이름으로 메서드를 정의하면 됩니다.
	public BasketballPlayer(String n, int h, int a, int s) {
		name = n;
		height = h; // 파라미터 이름을 필드명과 동일하게 할 경우 필드명 앞에 this를 붙여준다.
		age = a;
		salary = s;
	}
	
	// showInfo(BasketballPlayer소속이므로 굳이 해당 단어를 적지 않아도 구분 가능)
	// 를 작성해주시고, 호출시 위의 4개 변수를 콘솔에 찍도록 해주세요.
	public void showInfo() {
		System.out.println("이름: " + name);
		System.out.println("키: " + height);
		System.out.println("나이: " + age);
		System.out.println("연봉: " + salary);
	}
	
	public void dunkShoot() { // 덩크슛하기 기능
		if(height > 195) {
			System.out.println("덩크슛 성공!");
		} else {
			System.out.println("덩크슛 실패...");
		}
	}

}
package class_;

public class BasketballPlayerMain {

	public static void main(String[] args) {
		// 농구선수 2명을 만들어주시고 정보를 조회하는 코드를 작성해주세요.
		BasketballPlayer b1 = new BasketballPlayer("농선", 190, 20, 100000000);
		// b1.name = "농선";
		// b1.height = 190;
		// b1.age = 20;
		// b1.salary = 1000000000;
		
		BasketballPlayer b2 = new BasketballPlayer("구수", 200, 22, 200000000);
		// b2.name = "구수";
		// b2.height = 200;
		// b2.age = 22;
		// b2.salary = 2000000000;
		
		b1.showInfo();
		b1.dunkShoot();
		
		b2.showInfo();
		b2.dunkShoot();

	}

}

 

 

 

패키지 예제

 

패키지 구조는 위와 같다.

basic 패키지 하위에 furit, hello, importex 패키지가 있고 hello 패키지 하위에는 hi와 bye 패키지가 있다.

package basic.importex;

import basic.fruit.Apple;
import basic.hello.bye.Bye;
import basic.hello.hi.Hi;

/*
 * 같은 프로젝트 내의 코드끼리나 혹은 자바에서 기본으로 제공하는 클래스파일은 
 * 언제든지 가져다가 사용할 수 있습니다.
 * 다만 다른 패키지에 있는 클래스를 사용하려면 반드시 package 선언부 아래
 * (1번 라인 아래)에 import 선언을 통해 참조할 클래스의 경로를 적어야 합니다.
 * ex) import java.util.Date; <- Date 클래스를 참조하는 경로
 */

public class ImportExample {

	public static void main(String[] args) {
		// 같은 패키지 내의 다른 클래스를 호출할 때는 어떤 참조설정도 필요하지 않다.
		Test test = new Test(); 
		Apple apple = new Apple(); 
		// 나머지 과일 하나와, Hi, Bye도 같은 맥락으로 작성하면서
		// 자동완성을 통해 상단에 import되는 구문을 보며
		// 외부 패키지를 어떤식으로 참조하는지 직접 확인하세요.
		Hi hi = new Hi();
		Bye bye = new Bye();

	}

}

같은 프로젝트 내의 코드끼리나 혹은 자바에서 기본으로 제공하는 클래스파일은 언제든지 가져다가 사용할 수 있다.

 

다만 다른 패키지에 있는 클래스를 사용하려면 반드시 package 선언부 아래 (1번 라인 아래)에

 

import 선언을 통해 참조할 클래스의 경로를 적어야 한다.

 

ex) import java.util.Date; <- Date 클래스를 참조하는 경로