Notice
Recent Posts
Recent Comments
Link
컴퓨터는 잘못이 없다..
[JAVA]자바의 접근 제어자, default생성자가 없으면 어떻게 될까 본문
Contents
접기
[핵심]
1. 자바의 접근 지정자에 대해 알아보자.
2. 클래스에 default생성자가 없으면 어떻게 될지 살펴보자.
[예제코드]
Car.java
package test.auto;
/*
접근지정자 4가지
1. public - 모두 공개
2. protected - in package or another package + child (같은 패키지라면 공개하겠다 or 다른 패키지더라도 상속관계이면 공개하겠다.)
3. defalut(접근지정자를 적지 않음) - in package
4. private - in object or in class
in object or in class의 의미
private static String name -> 클래스 안에서만 공개
private String name -> 객체 안에서만 공개
static 필드는 클래스에 만들어지는 필드
non static 필드는 객체 안에 만들어지는 필드
*class의 접근지정자는 public과 defalut만 쓰며, import 가능여부를 지정해준다. 보통은 public을 쓴다.*
*/
//class의 접근지정자는 import 가능여부를 정해준다.
public class Car {
//protected 접근 지정자를 가진 필드
protected Engine engine;
//Engine type을 인자로 전달 받는 생성자
public Car(Engine engine) {
this.engine= engine;
}
//메소드
public void drive() {
if(this.engine==null) {
System.out.println("Engine이 없어서 달릴수가 없어요!");
return; //메소드 끝내기
}
System.out.println("달려요!");
}
}
Engine.java
package test.auto;
public class Engine {
}
MainClass09.java
package test.main;
import test.auto.Car;
import test.auto.Engine;
public class MainClass09 {
public static void main(String[] args) {
//defalut 생성자가 없으므로 아래와 같은 방법으로는 객체 생성 불가.
//Car car1 = new Car();
Car car1 = new Car(new Engine());
car1.drive();
}
}
MainClass09.java 실행결과
달려요!
[예제코드 설명]
01. 자바의 접근 지정자
▼private, public, default, protected 접근가능유무를 그림으로 표현해보았다.
▼Car.java에서 class에 접근지정자를 붙여주면 어떻게 될까?
02. 클래스에 기본(default) 생성자가 없으면 어떻게 될까?
▼Car.java의 매개변수가 있는 생성자만 있으면 어떻게 될까?
▼MainClass09.java 에서 Car car1=new Car();로는 객체 생성이 불가능하다.
'공부 > JAVA' 카테고리의 다른 글
Comments