java基础_day0022_java关键字_this_super_构造器_子类对象实例化

来源:互联网 发布:初中考试软件 编辑:程序博客网 时间:2024/06/06 00:46
super 关键字 




调用 父类中和子类中 重名的 属性 和方法    调用父类的属性和方法  用super.关键字  调用子类中的属性和方法用this.


如果只有父类和子类中的属性或者方法不同名 则可以省略关键字 或者用this. 或者super.都可以。


如果 子类重写 父类的方法 之后   还想调用父类的方法,  直接用super.的形式去显示调用父类的方法,  直接写方法名或者 this.方法名的形式来调用重写父类之后的方法。






super(形参列表)形容构造器  也必须在构造器首行。  this(形参列表)


父类:

package day08_03;public class Person {private int age;private String name;protected int id; //父类的idpublic int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}}


子类:


package day08_03;/** * Worker 继承 Person 父类  有重复属性  id    *  * this.id 调用子类的id 属性   * super.id 调用父类的id 属性  * @author Administrator * */public class Worker extends Person{private  int id; //子类的idprivate  String desc;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getDesc() {return desc;}public void setDesc(String desc) {this.desc = desc;}public Worker() {super();}public  void eat(){this.id=123;super.id=555555;System.out.println(this.id+":"+super.id);}}


测试类



 子类的实例化过程   
 
  在new 子类对象时  除了子类本身的属性外,  在调用子类的构造器时 ,默认调用suer()构造器 同时把父类的属性带入子类对象中。

package day08_03;/** * 子类的实例化过程    *  * 在new 子类对象时  除了子类本身的属性外,  在调用子类的构造器时 ,默认调用suer()构造器 同时把父类的属性带入子类对象中。 *  * @author Administrator * */public class TestWorker {public static void main(String[] args) {Worker w = new Worker();w.eat();}}



 子类对象的实例化过程
  当前类中的构造器中  如果有N个构造器 最多可以有N-1个   this(形参列表);语句来调用其他的构造器 【this语句必须在构造器的首行】。
  最后一个 无 this(形参列表); 的构造器       首行   默认有super(形参列表); 语句来调用其继承父类的构造器 ,
  利用父类的构造器 来加载父类具有的属性和方法,【由于有权修饰符限问题,有的属性和方法  子类能够加载 ,确无法调用  使用 】  当前类如果无显式继承的父类 那么继承其  顶级父类Object
 Object 类中通过API观察得知 只有 构造器   、方法  无具体属性 。      


package day08_05;/** * 子类对象的实例化过程 * 当前类中的构造器中  如果有N个构造器 最多可以有N-1个   this(形参列表);语句来调用其他的构造器 【this语句必须在构造器的首行】。 * 最后一个 无 this(形参列表); 的构造器       首行   默认有super(形参列表); 语句来调用其继承父类的构造器 , * 利用父类的构造器 来加载父类具有的属性和方法,【由于有权修饰符限问题,有的属性和方法  子类能够加载 ,确无法调用  使用 】  当前类如果无显式继承的父类 那么继承其顶级父类Object * Object 类中通过API观察得知 只有 构造器   、方法  无具体属性 。       *  * @author Administrator * */public class TestDog {public static void main(String[] args) {Dog dog = new Dog();//调用当前dog对象的属性  +  继承父类的属性+ 父类的父类方法+ 顶级父类Object的 toString()方法System.out.println(dog.getAge()+"--"+dog.getHostName()+":"+dog.getName()+"\t"+dog.toString());}}class Creator{private  String name;public Creator() {//实例化当前对象时默认调用父类的空参构造器,默认继承object父类//super 修饰构造器 跟this关键字一样 必须放在构造器的首行。super();this.name="小花狗";}public String getName() {return name;}public void setName(String name) {this.name = name;}}class Animal extends Creator{private int age;public Animal() {super();this.age = 5;}public Animal(int age) {super();this.age = age;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}}class  Dog extends  Animal{private String hostName;public Dog() {super(5);this.hostName="miss  ming";}public String getHostName() {return hostName;}public void setHostName(String hostName) {this.hostName = hostName;}}










0 0
原创粉丝点击