继承学习日志

来源:互联网 发布:区域生长算法详解 编辑:程序博客网 时间:2024/06/02 17:27

子父类出现后,类成员的特点

 

1,变量

如果子类中出现非私有的同名成员变量时,

子类要访问本类中的变量,用this。       this代表的是本类对象的引用。

子类要访问父类中的同名变量,用super。  super代表的是父类对象的引用。

class Fu 

{

private int num = 4;

public void setNum(int num)

{

this.num =num;

}

public int getNum()

{

return this.num;

}

}

 

class Zi extends Fu

{

int num = 5;

void show()

{

System.out.println(this.num);

System.out.println(super.num);

}

}

 

class  ExtendsDemo

{

public static void main(String[] args) 

{

Zi z = new Zi();

z.show();

}

}

 

输出结果是:5 4。  Zi()类中this.num引用的是本类中的num=4,因为this代表的是本类对象的引用super.numF引用的是Fu()类中的num=5,因为super代表的是父类对象的引用

 

 

2,子父类中的函数。

当子类出现和父类一模一样的函数时,子类对象调用该函数,会运行子类函数的内容,这种情况是函数的另一个特性:重写(覆盖)

覆盖:

1,子类覆盖父类,必须保证子类权限大于等于父类权限,才可以覆盖,否则编译失败。

2,静态只能覆盖静态。

class Fu

{

void show()

{

System.out.println("fu show");

}

void speak()

{

System.out.println("vb");

}

}

class Zi extends Fu

{

void show()

{

System.out.println("zi show");

}

void speak()

{

System.out.println("java");

}

}

class ExtendsDemo3 

{

public static void main(String[] args) 

{

Zi z = new Zi();

z.speak();

 

}

}

 

输出结果是:java    zi show

 

 

 

 

 

3,子父类中的构造函数。

在对子类对象进行初始化时,父类的构造函数也会运行,那是因为子类的构造函数默认第一行有一条隐式的语句 super()super()会访问父类中空参数的构造函数。而且子类中所有的构造函数默认第一行都是super()。所以子类在对象初始化时,要先访问一下父类中的构造函数。

 

class Fu

{

Fu()

{

System.out.println("fu run");

}

}

 

class Zi extends Fu

{

Zi()

{

System.out.println("zi run");

}

}

 

class  ExtendsDemo4

{

public static void main(String[] args) 

{

Zi z = new Zi();

System.out.println(z.num);

}

}

 

输出结果是:fu run    zi run    

0 0
原创粉丝点击