继承
继承就是子类继承父类的属性和行为,使子类具有父类的属性特征和行为,这样的目的是为了扩展父类,满足需要增强类的功能。继承又称类的派生,子类只能继承一个父类,而父类可派生多个子类。Java使用extends关键字来实现:
public class A{//定义一个父类
int x;
void fx() {}
}
public class B extends A{//定义子类
int y;
void fy() {
fx();//子类可直接使用父类中的成员变量和成员方法
}
}
继承————成员变量的关系:
如果父类的成员变量和子类的成员变量同名,查找使用的顺序为:子类局部范围 ——> 子类成员范围 ——> 父类成员范围
public class Fu {
String name = "父类的成员变量";
}
public class Zi extends Fu{
String name = "子类的成员变量";
public void aa() {
String name = "局部变量";
System.out.println(name);
}
}
继承对于同名变量在Java中是这样执行的,那么在实际中我们该怎么去区分他们呢?这就用到了this关键字和super关键字:
- this:代表当前对象的引用
- super:代表父类存储空间的标识
调用成员变量
- this.成员变量 访问当前对象的成员变量
- super.成员变量 调用父亲的成员变量
调用构造方法
- this(…) 调用当前对象的构造方法
- super(…) 调用父亲的构造方法
调用成员方法
- this.成员方法 调用当前对象的成员方法
- super.成员方法 调用父类的成员方法
//定义父类
public class Fu {
String name = "父类的成员变量";
public void aa() {
System.out.println("父类的成员方法");
}
}
//下面定义子类
public class Zi extends Fu {
String name = "子类的成员变量";
public void aa() {
String name = "局部变量";
System.out.println("子类的成员方法");
System.out.println(name);
System.out.println(this.name);
System.out.println(super.name);
}
}
继承————方法的重写:
在子类中定一个与父类方法名相同,返回值相同,参数列表相同,但方法体不同的方法,方法的重写是为了扩展父类的方法,实现父类不能完成的操作。
public class Fu {
String name = "父类的成员变量";
public void aa() {
System.out.println("父类的成员方法");
}
public void bb(String name ) {
name = this.name;
System.out.println("我可用调用"+name);
}
}
public class Zi extends Fu {
String name = "子类的成员变量";
public void aa() {
String name = "局部变量";
System.out.println("子类的成员方法");
System.out.println(name);
System.out.println(this.name);
System.out.println(super.name);
}
public void bb(String name ) {
name = super.name;
System.out.println("我可用调用"+name);
System.out.println("我是子类,我还可以使用"+this.name);//这一语句就是扩展内容,当然扩展不止输出语句,继承熟悉了能作其他用途
}
}
学无止境。老狗在此欢迎各位大神指出鄙人之不足,提出你们宝贵意见。
- 转载请注明出处。