
本文共 1679 字,大约阅读时间需要 5 分钟。
1.继承:必须类与类之间有所属关系才可以继承,如 is a 的关系。
2.子父类中的变量:1.如果子类出现与父类相同的名字的私有变量,结果是无法访问(私有变量,只在本类中有效);
2.如果子类出现与父类相同的名字的非私有变量,子类要访问本类中的变量用this,子类要访问父类中的变量用super;
this:代表本类对象的引用,super:代表父类对象的引用。
3.子父类中的函数:当子类与父类出现相同的非静态函数时,子类对象调用该函数时,会运行子类函数的内容;如同父类函数被覆盖一样。(多态特性)
覆盖:子类覆盖父类,必须保证子类的权限大于等于父类权限,才可以覆盖。2.静态只能覆盖静态。
4.子父类中的构造函数:在对子类进行初始化时,父类的构造函数也会运行,因为子类构造函数第一行有一条隐式语句:super(),并且子类中所有构造函数默认第一行都是super();
子类的所有构造函数,都会访问父类中空的构造函数。
5. 当父类中没有空参数的构造函数时,子类必须通过手动通过super语句形式来制定要访问父类中的构造函数。当然,子类也可以用this语句来访问本类中的构造函数。
6.重载:同名函数的不同参数列表,参数列表不同的含义包含参数的个数不同,参数的数据类型不同;函数的返回值和修饰符也可以不同。作用范围是:同一个类中
重写:子类和父类的方法要一模一样(包括权限修饰符,返回值类型),只是函数体不同。作用范围是:两个类以上发生的关系。
7.代码实例:
public class Fu {
private int m=3;
int n=4;
public Fu(){
System.out.println("woshi fu");
}
}
public class Zi extends Fu{
int n=9;
public Zi(){
//super();默认
System.out.println("woshi zi");
}
public Zi(String s){
//super();默认
System.out.println("woshi "+s);
}
public void show(){
System.out.println(this.n+">>"+super.n);
}
}
public class Test {
public static void main(String[] args) {
Zi z=new Zi();
z.show();
Zi z2=new Zi("有参数");
}
}
打印结果为:
woshi fu
woshi zi
9>>4
woshi fu
woshi 有参数
将父类中的构造函数注释掉
public class Fu {
private int m=3;
int n=4;
/**
public Fu(){
System.out.println("woshi fu");
}
**/
}
再次调用的结果为:
woshi zi
9>>4
woshi 有参数
将程序修改:
public class Fu {
private int m=3;
int n=4;
/**
public Fu(){
System.out.println("woshi fu");
}
**/
public Fu(String s){
System.out.println(s);
}
}
public class Zi extends Fu{
int n=9;
public Zi(){
super("dd");
System.out.println("woshi zi");
}
public Zi(String s){
super(s);
System.out.println("woshi "+s);
}
public void show(){
System.out.println(this.n+">>"+super.n);
}
}
测试结果:
dd
woshi zi
9>>4
有参数
woshi 有参数
发表评论
最新留言
关于作者
