码迷,mamicode.com
首页 > 其他好文 > 详细

继承(代码体现)

时间:2015-07-11 09:17:20      阅读:154      评论:0      收藏:0      [点我收藏+]

标签:

子父类出现后类中成员的特点;

类中成员:

1:变量

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

子类要访问本类中的变量,用this

子类要访问父类中的同名变量,用super

 

super和this的使用几乎一致;

this代表的是本类对象的引用,super代表的是父类对象的引用

2:函数

当子类出现和父类一模一样的函数时

当子类对象调用该函数,会运行子类函数的内容

如同父类的函数被覆盖一样

 

这种情况是函数的另一个特性:重写(覆盖)

覆盖:

1.子类覆盖父类,必须保证子类的权限大于等于父类,才可以覆盖

2.静态覆盖静态;

记住!!

重载:只看同名函数的参数列表

重写:子父类方法要一模一样

 

当子类继承父类,沿袭了父类的而功能到子类中,但子类虽具备该功能,但是功能的内容不一致,这时,没有必要新定义功能,而是使用覆盖特殊,保留父类的功能定义,并重写功能内容。

 

3:构造函数

 

 

 

 

class Fu
{
	int num1=4;
}
class Zi extends Fu
{
	int num2=5;
}

class ExtendsDemo
{
	public static void main(String[] args)
	{
		Zi z=new Zi();
		System.out.println("num1="+z.num1+"...num2="+z.num2);
	}
}

技术分享

但如果子父类的有相同的变量呢

class Fu
{
	int num=4;
}
class Zi extends Fu
{
	int num=5;
	void show()
	{
		System.out.println(num);
	}
}

class ExtendsDemo
{
	public static void main(String[] args)
	{
		Zi z=new Zi();
		System.out.println("num="+z.num);
		z.show();
	}
}


技术分享

可以看到第一行打印的是num是子类变量的值;

而第二行show()打印的是子类的是因为show(this.num),省略了this;如果想打印父类的值,这时应用一个关键字  super;

..........
class Zi extends Fu
{
	int num=5;
	void show()
	{
		System.out.println(super.num);
	}
}
.....

这样就打印的是父类的值

 

 

 

子父类中有相同名的函数

 

class Fu
{
	void speak()
	{
		System.out.println("vb");
	}
}
class Zi extends Fu
{
	void speak()
	{
		System.out.println("java");
	}
}

class ExtendsDemo
{
	public static void main(String[] args)
	{
		Zi z=new Zi();
		z.speak();
	}
}

技术分享

 


 

 

 

版权声明:本文为博主原创文章,未经博主允许不得转载。

继承(代码体现)

标签:

原文地址:http://blog.csdn.net/l55iuming/article/details/46834957

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!