Java 핵심 기술 노트 - 4장
4370 단어 Java 핵심 기술 노트
제4장 대상과 클래스
1. 인용 가능한 대상을 되돌려주는 액세서리 방법을 작성하지 마라
예를 들면 다음과 같습니다.
class Employee
{
private Date hireDay;
public Date getHireDay()
{
return hireDay;
}
}
Employee e = ...;
Date d = e.getHireDay();
이때 d는 e의hireDay이고 d에 대한 변경은 e의hireDay의 변경을 직접 초래할 수 있다.
2. 만약에 두 대상이 같은 종류에 속한다면 한 대상의 방법은 다른 대상의 개인 데이터에 접근할 수 있다.
즉, Employee 클래스의 방법은 Employee 클래스의 모든 대상의 개인 영역에 접근할 수 있다.예를 들면 다음과 같습니다.
class Employee
{
...
public boolean equals(Employee other)
{
return name.equals(other.name);
}
}
호출:if (Harry.equals (boss)... 이때 Harry의 개인 영역뿐만 아니라 boss의 개인 영역도 방문합니다.
3.private final Date hiredate;단지 Hiredate 변수의 대상 인용이 대상 구조 이후에 바뀔 수 없다는 것을 의미할 뿐이다.hiredate의 비final 데이터 영역은 변경할 수 있습니다.
4. 정적 방법은 대상에게 조작을 할 수 없고 정적 영역에 접근할 수 없지만 정적 영역에 접근할 수 있는 방법이다.예: Math.pow(x,a); 다음 세 가지 상황에서 정적 방법을 사용할 수 있다. (1) 한 방법은 대상 상태에 접근할 필요가 없고 필요한 매개 변수는 현식 매개 변수를 통해 제공된다.(2) 하나의 방법은 클래스의 정적 영역에 접근하기만 하면 된다.(3) NumberFormat 클래스처럼 플랜트 메소드를 사용하여 다양한 유형의 객체를 작성합니다.
NumberFormat currencyFormatter = NumberFormat.getCurrencyInstance();//
NumberFormat percentFormatter = NumberFormat.getPercentInstance();//
5. 모든 종류에main 방법이 있습니다.
이것은 클래스를 단원 테스트에 사용하는 기교다.예를 들어 Employee 클래스에main 방법이 있는데 Application 클래스는 더 큰 클래스이고main 방법도 있다.이때 Employee 클래스를 독립적으로 테스트하려면 자바 Employee만 필요합니다.자바 Application을 사용할 때 Application의main 방법만 호출하고 Employee의main 방법을 실행하지 않습니다.
6. 암시적 매개 변수와 디스플레이 매개 변수, 예를 들어number007.raiseSalary(5);그 중에서number007은 스텔스 파라미터이고 5는 디스플레이 파라미터이다.this는 스텔스 파라미터를 나타낼 수 있습니다.
7. 방법 매개 변수.두 가지: 값 호출과 인용 호출 자바에서 함수 매개 변수에 사용되는 대상 인용은 인용 호출이 아니라 값 호출에 속한다.대상 파라미터가 새로운 대상을 인용할 수 없다는 뜻이다.총괄: (1) 방법의 매개 변수가 인용 유형일 때 매개 변수의 데이터 영역에 대한 변경은 진정한 대상의 데이터 영역에 변화를 초래할 수 있다.(2)
public static void swap(Employee x, Employee y)
{
Employee temp = x;
x = y;
y = temp;
}
문장 swap(employee1,employee2)을 실행합니다.주의:employee1과employee2가 인용한 대상은 교환되지 않았습니다.
8. 클래스가 어떤 구조기를 제공하지 않을 때만 시스템은 파라미터가 없는 기본 구조기를 제공한다.
9. 한 구조기에서this를 사용하여 다른 구조기를 호출할 수 있다.예를 들어,
public Employee(double s)
{
this("Employee #" + nextId, s);
nextId++;
}
Employee(double) 구조기를 호출할 때 Employee(String, double) 구조기도 호출됩니다.
10. 블록 초기화
데이터 영역을 초기화하는 세 가지 방법: (1) 성명에 값을 부여한다(2) 구조기에서 값을 부여한다(3) 초기화 블록을 사용한다. 아래와 같이 초기화 블록이 된다.
class Employee
{
private static int nextId;
private int id;
//
// ,
{
id = nextId;
nextId++;
}
// ( )
static
{
Random generator = new Random();
nextId = generator.nextInt(10000);
}
//
...
}
데이터 영역 초기화 순서: 블록을 초기화하고 구조기를 호출합니다.
11. 가방(1) 하나의 클래스는 소속 가방의 모든 클래스와 다른 가방의 공유 클래스를 사용할 수 있다.(2) 자바를 접두사로 하는 모든 패키지를 가져올 수 없습니다. 예를 들어 import 자바.*;이러면 안돼.(3) import 문장은 패키지와 클래스를 가져올 수 있을 뿐만 아니라 클래스의 정적 필드와 정적 방법도 가져올 수 있다.예를 들어 import static java.lang.System.out; (4) 컴파일 명령:javac com/mycompany/PayrollApp.java 해석기 명령: java com.mycompany.Payroll App이 사용하는 것은./(5) 클래스의 패키지 이름이 틀리면 이 원본 파일을 정상적으로 컴파일할 수 있지만 가상 컴퓨터가 찾을 수 없기 때문에 실행할 수 없습니다.class 클래스 파일.(6) 패키지 역할 영역.변수가public로 표시된 것은 임의의 클래스에 접근할 수 있습니다.private로 표시된 클래스만 사용할 수 있습니다.지정하지 않으면 같은 가방에 접근할 수 있습니다.
12. 자바는 데이터 필드만 초기화하고 국부 데이터 변수는 초기화하지 않습니다.