Java_기초_Day5_2

임정민·2022년 10월 25일
1

언어공부

목록 보기
6/10
post-thumbnail

1. Java 기초 다지기 (5-2)

 package kr.co.jungmin.entity;
// 사실 kr 패키지를 만들고 co 패키지를 만들고 jungmin, entity.....를 만듬

public class Person { 
// 만약 package class 이면 다른 패키지에 import해도 참조 못함
	String name;
	
	public void print() {
		System.out.println(name);
		
	}
}
package kr.co.jungmin.entity;

public class Major {

	String major; 
	
	public void setName(Person p, String name) {
		
		p.name = name;
		
	}
	
	public void print() {
		
		System.out.println(major);
		
		
	}
}
package kr.co.jungmin;

public class Student {

}

package kr.co.jungmin;
// 패키지명은 모두 소문자. 특수문자 사용 X

import java.lang.*;  // 자동으로 되어있음 String, System 등
import kr.co.jungmin.entity.Person;
import kr.co.jungmin.entity.Major;
import kr.co.jungmin.entity.*;   // 모두 import.  * (Asterisk). 실무에서는 사용 X
// or 빨간줄 클릭하면 import 구문 생김 or Ctrl + Shift + o (Organize import)

class Car{
	
	 String instruct;   // [없음] String -> 인스턴스 멤버. 인스턴스를 통해 참조해야함 
	 static String instruct2;  // static(지정예약어) 사용 시 클래스 멤버임
	 
	 static void setInstruct2(String instruct2) {
		 Car.instruct2 = instruct2;
		 System.out.println(Car.instruct2);
		 
	 }
	 
	 static void getInstruct2() {
		 System.out.println(Car.instruct2);
	     // System.out.println(Car.instruct); Non static 참조 못함. 인스턴스 멤버임. this 못쓰기 때문
	 }
	 
	 
	 void getInstruct() {
		 System.out.println(instruct); // Non static 임. instruct 상위로 찾아서 참조 가능 
	     
	 }
	 
     
     
     
	 int instancecount  = 0 ; // 인스턴스 멤버 선언과 동시에 초기화 가능
	 static int count;  // 일반적으로는 선언과 동시에 초기화
	 					
	 static {         // static field를 통해 초기화하는 방법도 있음
		 count = 0;
	 }
	 
	 public Car() {
		 count++;
		 instancecount++;
		 System.out.println(count + "번째 자동차가 생산되었습니다.");
		 
	 }
	 
	 
	 public int getCount() {
		 return count;
		 
	 }
	 
	 public int getInstancecount() {
		 return instancecount;
		 
	 }
	 
}



public class Application {   // Application 이라는 클래스는 kr.co.jungmin 이라는 패키지에 포함되어있음
	
	public static void main(String[] arg) {
		
//		Person p1 = new Person(); 다른 패키지에 위치해 참조할 수 없음. 아래와 같이 표기해야함
//		kr.co.jungmin.entity.Person p1 = new kr.co.jungmin.entity.Person();
//	    이러한 기술방식을 Full Quality Domain Name(FQDN) 이라고 함.
//      아니면 패키지를 import 하면됌
		
		Person p1 = new Person();
		Student s1 = new Student();
		
	//  p1.name = "홍길동";     [package] 생략되어있기 때문에 불가능
		p1.print();         // public void 이기 때문에 가능
		
		Major m1 = new Major();
		
		m1.setName(p1, "문수진");   // m1의 메서드 public -> 접근가능, setName의 인수 Person p 는 같은 패키지 -> 접근가능
		p1.print();
		
		
		
	 Car.instruct2 = "벤츠";   	  // 클래스 멤버는 객체를 생성하지 않아도 사용할 수 있는 멤버 
 	 System.out.println(Car.instruct2);
 	 Car.setInstruct2("아우디");
 	 Car.getInstruct2();
		
 	 
 	 
 	 Car c2 = new Car();
 	 Car c3 = new Car();
 	 System.out.println(c2.getCount()); // static 클래스 멤버는 공유 (Count 공유). 메모리 소비를 줄일 수 있음
 	 System.out.println(c3.getCount()); // Non static 인스턴스 멤버는 각각
 	 System.out.println(c2.getInstancecount());
 	 System.out.println(c3.getInstancecount());
 	 
	}
}


감사합니당🐷🐷🐷

profile
https://github.com/min731

0개의 댓글