[자바] 주목할만한 몇 가지 문법 사항 2

1. 다음 중 오류가 발생하는 행은 무엇입니까?

1
2
4
1 byte a1 =  2 , a2 =  4 , a3;
2 short s =  16 ;
3 . a2 = s;
4 . a3 = a1 * a2;

3 행과 4 행.

짧은 유형은 바이트 유형으로 캐스트 될 수 없습니다.

a1 * a2는 바이트 유형을 허용되지 않는 int 유형으로 캐스트해야합니다.


2. 

class Person {
    String name = "No name";
    public Person(String nm) {
        name = nm;
    }
}
class Employee extends Person {
    String empID = "0000";
    public Employee(String id) {
        empID = id;
    }
}
public class Test {
    public static void main(String args[]) {
        Employee e = new Employee("123");
        System.out.println(e.empID);
    }
}
编译 错误 : 암묵적인 슈퍼 생성자 Person ()은 정의되지 않았습니다. 다른 생성자를 명시 적으로 호출해야합니다.

Java 상속에서 하위 클래스는 생성 메서드를 상속하지 않고 암시 적으로 또는 명시 적으로 호출합니다.

실제로 작성하지 않을 때 시스템은 부모 클래스의 인수없는 생성 메서드를 암시 적으로 호출합니다.

또한 클래스의 경우 매개 변수 생성 방법을 생성 한 후에는 더 이상 매개 변수 생성 방법이 생성되지 않습니다.

그런 다음 부모 클래스에 매개 변수없는 생성 방법이 없으면 매개 변수를 포함하는 생성 방법이 있습니다.

하위 클래스를 만들 때 하위 클래스 생성자의 첫 번째 줄에서 부모 클래스의 매개 변수화 된 생성자를 명시 적으로 호출해야합니다.

부모 클래스의 매개 변수 생성자를 명시 적으로 호출하지 않으면 시스템은 기본적으로 부모의 매개 변수 생성자를 호출합니다.

그러나 이때 부모 클래스에는 매개 변수없는 생성 방법이 없으면 위의 컴파일 오류가 발생합니다.

Employee 클래스의 생성 방법을 다음과 같이 변경하여 컴파일하고 전달합니다.

 public Employee(String id) {
    	super(id);
        empID = id;
    }

3. 클래스 B는 클래스 A에서 파생 된 다음 클래스 B는 클래스 A의 공용 멤버 및 보호 된 멤버에 액세스 할 수 있습니다. 부모 클래스의 개인 멤버는 현재 클래스에서만 액세스 할 수 있습니다.

4. 일반적인 스레드 안전 클래스 : StringBuffer , Vector, Hashtable, Stack


추천

출처blog.csdn.net/michellechouu/article/details/48739079