728x90
반응형
Import 문
import 문
Engine.java를 hyundai 폴더로 옮겨서 오류가 뜨면 change 폴더를 클릭한다.
다른 패키지에 있는 것들을 가져오기
package chapter06.sec06.exam02.mycompany;
import chapter06.sec06.exam02.hyundai.Engine;
import chapter06.sec06.exam02.hankook.*;
import chapter06.sec06.exam02.hankook.Tire;
import chapter06.sec06.exam02.kumho.*;
//import문 자동 정리 단축키 = Ctrl + Shift + O
// 최상위 패키지 chapter06, 하위 패키지 sec06, 그 다음 하위 패키지 exam02,
// 그다음 하위 패키지 mycompany 안에 Car 클래스를 생성합니다.
public class Car {
// 필드 선언
Engine engine = new Engine();
SnowTire tire1 = new SnowTire();
BigWidthTire tire2 = new BigWidthTire();
// chapter06.sec06.exam02.hankook.Tire tire3 = new chapter06.sec06.exam02.hankook.Tire();
// chapter06.sec06.exam02.kumho.Tire tire4 = new chapter06.sec06.exam02.kumho.Tire();
Tire tire3 = new Tire();
chapter06.sec06.exam02.kumho.Tire tire4 = new chapter06.sec06.exam02.kumho.Tire();
}
접근 제한자
접근지시어, 접근 제어자라고도 하며, 접근을 제한하기 위해 사용
접근: 클래스 및 인터페이스, 그들이 가지고있는 멤버의 접근
defalut : 같은 패키지 안에서 사용가능
public : 공용 접근제한, 인터넷으로 배포되는 라이브러리 클래스는 모두 public 접근 제한을 가지고있다.
private :
protected : 상속이 되었을 때 사용가능
접근제한자
defalut 는 같은 패키지에서는 서로 연동된다.
defalut 다른 패키지엣서는 연동이 안된다.
public은 다른 패키지에서도 인식이 된다.
생성자의 접근 제한
생성자의 접근 제한
필드와 메소드 접근 제한
필드와 메소드의 접근 제한
// 같은 패키지 안에 같은 클래스는 모두 인식된다.
Base class 생성
private 접근제한자로 설정된 field3 필드는 접근하지 못함
case 클래스 생성
package chapter06.sec06.exam05.package1;
// 클래스를 구성하는 멤버인 필드와 메서드에대한 접근 제한자 이해를 위해 Ace 클래스를 코딩
public class Ace {
//필드 선언
public int field1; // public 접근 제한자인 int형의 field1 필드 선언
int field2; // default 접근 제한자인 int형의 field2 필드선언
private int field3; // private 접근 제한자인 int 형의 field3 필드선언
//메서드 선언
public void method1() { //public 접근 제한자인 void 타입의 method1()메서드 선언
}
void method2() { //default 근 제한자인 void 타입의 method2()메서드 선언
}
private void method3() { // private 접근 제한자인 void 타입의 method1()메서드 선언
}
// 같은 패키지 안에 같은 클래스는 모두 인식된다.
//생성자 선언
public Ace() {
field1 =1;
field2 =1;
field3 =1;
method1();
method2();
method3();
}
}
package chapter06.sec06.exam05.package1;
// 앞서 생성한 Ace 클래스와 같은 패키지(package1) 안에 있는
// Base 클래스 소스 코딩을 통해 접근 제한자를 이해해 봅니다.
public class Base {
public Base() {
Ace ace = new Ace();
ace.field1 = 1;
ace.field2 = 1;
// ace.field3 = 1; // Ace 클래스에서 private 접근 제한자로 설정된 field3 필드는 접근하지못함
ace.method1();
ace.method2();
// ace.method3(); // Ace 클래스에서 private 접근 제한자로 설정된 method3() 필드는 접근하지못함
}
}
package chapter06.sec06.exam05.package2;
import chapter06.sec06.exam05.package1.*;
// 앞서 생성한 package1 안에 있는 Ace 클래스를
// 다른 패키지 영역인 package2 안에 생성한 Case 클래스에서 접근해 보는 예시입니다.
public class Case {
public Case() {
Ace ace = new Ace();
ace.field1 = 1;
// 다른 패키지 영역인 package1 안에서 default로 접근 제한이 되어있기때문에
// field2 필드는 인식하지 못합니다.
// ace.field2 = 1;
// 다른 패키지 영역인 package1 안에서 private로 접근 제한이 되어있기때문에
// field2 필드는 인식하지 못합니다.
// ace.field3 = 1;
ace.method1();
// 다른 패키지 영역인 package1 안에서 default로 접근 제한이 되어있기때문에
// method2 메서드는 인식하지 못합니다.
// ace.method2 = 1;
// 다른 패키지 영역인 package1 안에서 private로 접근 제한이 되어있기때문에
// method3 메서드는 인식하지 못합니다.
// ace.method3 = 1;
}
}
Getter 와 Setter 메소드
Car
package chapter06.sec06.exam06;
//Getter와 Setter 메서드 선언 이해를 위해 Car 클래스를 생성해 줍니다.
public class Car {
//필드 선언
private int speed; // private 접근 제한 형식의 int 타입 speed 필드를 선언
private boolean stop; // private 접근 제한 형식의 boolean타입 stop 필드 선언
//생성자 선언
// public Car() {}
//메서드 선언: Getter와 Setter 선언 시 이클립스 개발툴에서는
// Source - Generate Getter and Setter ... 메뉴를 활용하여, 자동 메서드 생성이 가능
public int getSpeed() {
return speed;
}
public void setSpeed(int speed) {
if(speed < 0) {
this.speed = 0;
return;
}else {
} this .speed = speed;
}
public boolean isStop() { //멈춤
return stop;
}
public void setStop(boolean stop) { //
this.stop = stop;
this.speed = 0; // stop이 true일 때 0 , 스피드도 0으로 해서 중지시킴
}
}
car exaple class
package chapter06.sec06.exam06;
// 앞서 생성한 Car 클래스를 활용하여, CarExample 실행 클래스를 소스코딩합니다.
public class CarExample {
public static void main(String[] args) {
Car myCar = new Car();
// 잘못된 속도 설정 이루어질 경우,
myCar.setSpeed(-50);
System.out.println("현재 속도 = " + myCar.getSpeed()); //현재 속도 0
//멈춤(stop) 상태일 경우, stop이 true인 경우,
if(myCar.isStop()) {
myCar.setStop(true);
}
System.out.println("현재속도 =" + myCar.getSpeed());
}
}
정리
728x90
반응형
'☭DEVELOPER > #2 웹개발(자바기반 풀스택)' 카테고리의 다른 글
[BACKEND]JAVA_ECLIPSE19 인터페이스 (0) | 2023.08.28 |
---|---|
[BACKEND]코딩테스트5 (0) | 2023.08.28 |
[BACKEND]JAVA_ECLIPSE14 인스턴스 멤버와 정적 멤버 (0) | 2023.08.24 |
[BACKEND]JAVA_ECLIPSE 코딩테스트 3 (2) | 2023.08.24 |
[BACKEND]JAVA_ECLIPSE13 필드, 생성자, 메소드 (0) | 2023.08.23 |