동일 이름의 클래스 파일을 같은위치에 둘수 없고,
인슽턴스 생성방법에서 두 클래스에 차이가 없을때,
패키지의 선언이 필요하다
package a; //패키지 라고 선언한것으로 실제 패키지가 생긴다
com.wxfx.smart.Circle c1 = new com.wcfx.smart.Circle(3.5)
패키지이름은 모두 소문자, 도메인 명의 역순으로 이름을 구성하고 ,
클래스를 정의한 팀의 이름을 추가한다.
객체지향언어가 무엇인가?
OOP(객체지향)의 특징
클래스 추상화
정보은닉 상속 다형성 캡슐화
class Circle { double rad = 0; // 원의 반지름 final double PI = 3.14; public Circle(double r) { setRad(r); } public void setRad(double r) { if(r < 0) { rad = 0; return; } rad = r; } public double getArea() { return (rad * rad) * PI; }
이 상황에서 아래와같이 직접 값을 대입할때
public static void main(String args[]) { Circle c = new Circle(1.5); System.out.println(c.getArea()); c.setRad(2.5); System.out.println(c.getArea()); c.setRad(-3.3); System.out.println(c.getArea()); c.rad = -4.5; // 컴파일 오류 발생 안함 System.out.println(c.getArea()); } ~~~
이와같이 외부에서 다이렉트로
rad 에 직접 대입해도 오류가 발생하지않아 큰 문제가 될수있다.
이를 막기위해
문법을 도입해 컴파일 에러를 일으킨다
그 과정이...
- public 어디서든 인스턴스 생성이 가능
- default 동일 패키지 내 클래으세어만 인스턴스 허용
- privite 자기 클래스 내에서만 가능하다. 같은 패키지 내에서도 불가능
아무것도 안붙이면 디폴트다
최종소비자가 가장 쉽고 간편하게
최대한의 퍼포먼스를 얻을 수 있게 하는것
캡슐화 == 프로그램을 잘짜는 것
최소한의 로직으로 사용할수 있게하는것
함수 하나만 호출하면 잘 사용할수 있게 하는것