The inheritance and interface of the hands-on brain

Source: Internet
Author: User

? hands-on experiment One: Construction method invocation under inherited conditions

Run Testinherits.java Example

Package demo;

class Grandparent {

Public Grandparent () {

System. out. println ("grandparent Created.");

}

Public Grandparent (String string) {

System. out. println ("Grandparent created.string:" + String);

}

}

class Parent extends grandparent {

Public Parent () {

Super ("hello.grandparent.");

System. out. println ("Parent Created");

Super ("hello.grandparent.");

}

}

class Child extends Parent {

Public Child () {

System. out. println ("Child Created");

}

}

Public class Number {

Public Static void Main (String args[]) {

Child C = new child ();

}

}

observe the output, and note the invocation relationship between the parent class and the child class, modifying Parent constructs the code of the method, explicitly calls the Grandparent Another constructor, notice whether the calling code is the first sentence, the impact is significant!

Operation Result:

First time: Grandparent Created.

Parent Created

Child Created

Second time: Grandparent Created.String:Hello.Grandparent.

Parent Created

Child Created

If the parent class has no constructor (in fact, a default parameterless constructor), the constructor of the subclass is called automatically, and if the parent class has its own constructor (the parent class does not have a default parameterless constructor), then in the subclass constructor, you must call a constructor of the parent class. and must be called in the first statement of the construction method.

? hands-on experiment two: Thinking

Why do I have to call the construction method of the parent class before the constructor of the subclass is run? Can you turn around? Why can't it be reversed?

Constructs an object that first calls its constructor method to initialize its member functions and member variables. A subclass has member variables and member methods of the parent, and if not called, the member variables and member methods inherited from the parent class are not properly initialized. This can not be called in turn, because the parent class does not know what variables the subclass has and thus the subclass cannot get the initialized parent class variable, causing the program to run an error!

? hands-on experiment three: Write your own code to test the following features:

In a subclass, to invoke the overridden method in the parent class, you can use the Super key word.

The same as a hands-on brain:

Package demo;

class Grandparent {

Public Grandparent () {

System. out. println ("grandparent Created.");

}

Public Grandparent (String string) {

System. out. println ("Grandparent created.string:" + String);

}

}

class Parent extends grandparent {

Public Parent () {

Super ("hello.grandparent.");

System. out. println ("Parent Created");

}

}

Public class Number {

Public Static void Main (String args[]) {

Parent P=new parent ();

}

}

The inheritance and interface of the hands-on brain

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.