super和this关键字怎么用?

来源:百度知道 编辑:UC知道 时间:2024/05/01 16:51:54
package com.ket.cor;
import org.henan.util.*;
class AnimalS{
String sex;
public AnimalS(){
this("male");
System.out.println("This is the outline of Animal ! no param");
}
public AnimalS(String str){
this.sex = str;
System.out.println(this.sex);
System.out.println("Have parameters !");
}
public void eat(){
System.out.println("Have no special");
}
public String getSex(){
return this.sex;
}
public void setSex(String sex){
this.sex = sex;
}
}
class Person extends AnimalS{
private String name;
private int age;
String sex;
public Person(){
super();
System.out.println("This is subclass !");
this.name = "tom";
this.age = 20;
this.sex = "nv";
}
public void exc(){
System.out.println(this.name);
System

1.
main 因为是static静态的,不能指示新创建的类和父类
this(有参数/无参数) 用于调用本类相应的构造函数
super(有参数/无参数) 用于调用父类相应的构造函数
this. 后跟方法或属性 指示本类的方法或属性
super. 后跟方法或属性(父类中指明的public protected)

2.
调用父类方法改变此变量就只能改变父类里面的此变量,而不能改变子类里面的变量,为什么呢?

调用父类的方法改变的变量只能是父类的变量这是必然的,因为父类中不存在子类新加的变量,因此只能改变父类中的变量

super与this关键字的使用

1. super关键字
super关键字的作用是用于子类引用父类的成员,如属性、方法或者构造器。
1.1 调用父类构造器
用于调用父类的构造器,这是super的用法之一,它的基本格式是:
super([arg_list]);
直接用super()加上父类构造器所需要的参数,就可以调用父类的构造器了。如果父类中有多个构造器,系统将自动根据super()中参数个数和参数类型来匹配父类中的构造器。
需要注意的是如果子类中没有显示地调用父类中无参数的构造器,也没有在构造器中调用重载的其它构造器,则系统将会默认调用父类中无参数的构造器。此时如果父类中没有无参的构造器,则编译将会出错。
1.2 调用父类方法、属性
当super用于引用父类中的属性或方法时,使用下面的格式:
super.属性
super.方法()
注意,在这个时候,父类的属性或方法必须是那些protected(受保护)或者public(公共)等可以让子类访问的属性或者方法。
super用于调用父类的方法主要用于在子类中定义了和父类中同名的属性、或进行了方法的覆盖,而又要子类中访问父类中的同名属性或覆盖前的