1, 실험실 실습
근원
클래스 조부모
{
공공 조부모 ()
{
}
공공 조부모 (문자열 문자열)
{
}
{
공공 부모 ()
{
// 슈퍼 ( "Hello.Grandparent.");
{
공공 아이 ()
{
에서 System.out.println ( "아이가 만든");
{
공공 정적 무효 메인 (문자열 인수 [])
{
}
부모 만든
아이 만든
![](https://img2018.cnblogs.com/blog/1716196/201910/1716196-20191026121657912-1013086739.png)
2, 생각
서브 클래스의 생성자는 실행하기 전에 왜, 당신은 부모 클래스의 생성자를 사용해야합니까? 당신은 할 수 있나요? 이유는 무엇입니까?
생성자 변수 서브 클래스는 부모 클래스의 생성자를 호출하지 않는 경우, 부모 클래스를 상속 초기화되지 않은 변수의 일부 변수를 초기화하는 데 사용됩니다.
서브 클래스의 생성자 호출이 먼저가 아닌 부모 클래스와 서브 클래스 변수는 오류가 발생할 경우
삼,
클래스 {
}
공공 클래스 PART1 {
공공 정적 무효 메인 (문자열 []에 args) {
체계. 밖으로 .println ( 새 A ());
}
}
영업 실적은 다음과 같습니다 :
exercise.A@15db9742
16 진수 객체 클래스 객체 리턴 산출 해시 값과, 생성자 호출을 초기화 할 때.
네,
클래스 아버지
{
공공 무효 쇼 ()
{
에서 System.out.println ( "父类");
}
}
클래스 아들은 아버지 확장
{
공공 무효 쇼 ()
{
super.show ();
에서 System.out.println ( "子의类");
}
}
공용 클래스 TEST2
{
공공 정적 무효 메인 (문자열 []를 인수)
{
인자 S = 새로운 인자 ();
s.show ();
}
}
결과 :
부모
아강
5,
공공 클래스 ParentChildTest {
공공 정적 무효 메인 (문자열 []에 args) {
부모의 부모 = 새로운 부모 ();
parent.printValue ();
아이 아이 = 새로운 아이 ();
child.printValue ();
부모 = 아이;
parent.printValue ();
parent.myValue ++;
parent.printValue ();
((아동) 부모) .myValue ++;
parent.printValue ();
}
}
클래스의 부모 {
공공 의 INT myValue = 100;
공공 무효 printValue () {
체계. 아웃 .println ( "Parent.printValue () myValue ="+ myValue);
}
}
클래스 아이 확장 부모를 {
공공 의 INT myValue = 200;
공공 무효 printValue () {
체계. 아웃 .println ( "Child.printValue () myValue ="+ myValue);
}
}
1. 어떤 프로그램의 결과 남아?
2.이 출력을 얻을 것이다 방법을 설명?
3. 컴퓨터가 왜이 결과는 다음 실행 결과에서 실행하는 이유입니다 얻을, 당신은 자바의 어떤 구문 기능을 요약 할 수 잘못 아닌가요?
결과
개체가 서브 클래스 상위 클래스의 객체, 메소드 호출 상위 클래스의 오브젝트에있어서의 모든 서브 클래스를 할당되면 parent.myValue ++ 값이 경우, 그 결과는 여전히 서브이다 myValue 간단히 상위 클래스의 값이 변경 200 .myValue ++가 myValue 서브 클래스 값을 변경 myValue 값 및 ((자식) 상위), (201)의 출력이다.