继承(代码体现)

原创 2015年07月10日 20:59:41

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

类中成员:

1:变量

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

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

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

 

super和this的使用几乎一致;

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

2:函数

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

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

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

 

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

覆盖:

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

2.静态覆盖静态;

记住!!

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

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

 

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

 

3:构造函数

 1:在对子类对象进行初始化时,父类的构造函数也会运行。

      那是因为子类的构造函数默认第一行有一天隐式的语句 super();

      super();:会访问父类中空参数的构造函数,而且子类中所有的构造函数默认的第一行都是super();

 2:为什么子类一定要访问父类中构造函数(也就是说当父类没有空构造函数时,我们在子类的每个构造函数中,必须写上语句,去访问父类构造函数,否则编译不通过)

       因为父类中的数据子类可以直接获取,所以子类对象在建立时,需要先查看父类是如何对这些数据进行初始化的。

      所以子类在对象初始化时,要先访问一下父类中的构造函数。

     如果要访问父类中指定的构造函数,可以通过手动定义super语句的方式来指定。

注意:

super语句一定在子类的第一行,若有this()语句那么就不会有super()省略,二者择其一;

 

 

 变量

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();
	}
}

look!!!显示的是子类功能内容

 

 

 

子父类的构造函数

class Fu
{
	Fu()
	{
		System.out.println("fun run");
	}
}
class Zi extends Fu
{
	Zi()
	{
		System.out.println("zi run");
	}
}

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

可以看到确实继承父类,而且先走父类;

再看一个

class Fu
{
	Fu()
	{
		System.out.println("fu run");
	}
	Fu(int x)
	{
		System.out.println("fu..."+x);
	}
}
class Zi extends Fu
{
	Zi()
	{
		//super();
		System.out.println("zi run");
	}
	Zi(int x)
	{
		//super();
		System.out.println("zi..."+x);
	}
}

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


每个构造函数中都有super(),所以有俩fu run;

super()调用的是Fu()而不是Fu(Int  x);

 

 

 


 

 

 

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

继承-代码的复用

继承就是在原有的类基础上进行扩展,添加自己的东西或者修改原有的东西使之更加符合新类。这就好像是我们使用的物理或者数学定理是没必要反复写的,只需要在前人的基础上使用就好,当然方法是可以重写和重载的。 ...
  • CowBoyClimber
  • CowBoyClimber
  • 2016年11月07日 10:28
  • 432

1.继承与多肽-基础入门

从本篇文章开始将要讲解C++里面最重要的内容:继承与多肽。为什么要把继承和多肽放在一块讲是因为多肽只能发生在父类和子类之间(也就是没有继承就没有多肽)。   继承与多肽我准备花费三个篇幅来讲解: 1....
  • weiaipan1314
  • weiaipan1314
  • 2016年05月31日 11:17
  • 902

JAVA经典面试题(二)--如何体现JavaScript的继承关系?

js里常用的如下两种继承方式: 原型链继承(对象间的继承) 类式继承(构造函数间的继承)由于js不像java那样是真正面向对象的语言,js是基于对象的,它没有类的概念。所以,要想实现继承,可以用j...
  • JacXuan
  • JacXuan
  • 2017年04月11日 15:28
  • 27981

【设计模式】-几种关系在代码中的体现

什么是类? 将某类东西归纳在一起,可以成为一个类。 类有很多种提炼角度,需要根据系统地目标、业务的场景,选取合适的角度对事物进行归纳。 什么是类图? 类图可能是UML中使用的最多的一种图。 ...
  • ldb987
  • ldb987
  • 2017年10月10日 17:18
  • 191

继承在代码中的体现

成员变量:   当父子类成员变量同名是,输出子类的成员变量。 1、当成员变量同名时。怎么操作父类的成员变量:   1.当本累的成员变量和局部变量重名时,用this区分   2.当父子...
  • Forever_To
  • Forever_To
  • 2018年01月09日 09:36
  • 9

Java面向对象三大特征:封装、继承、多态

一、封装                  封装这个词听起来好象是将什么东西包裹起来不要别人看见一样,就好象是把东西装进箱子里面,这样别人就不知道箱子里面装的是什么东西了。其实 JAVA 中的封...
  • u011860731
  • u011860731
  • 2015年09月25日 10:26
  • 678

css样式继承体现

css样式继承体现 选择器再讲解(4+3+3+*) 四个基本选择器 通用选择器: *{property:value} 标签选择器:  标签名{ property:value } id选择...
  • A20160440419
  • A20160440419
  • 2017年11月04日 23:49
  • 122

C++面向对象的抽象 封装继承 多态总结

根源为总结http://www.cnblogs.com/clongge/archive/2008/07/09/1239076.html 面向对象的编程语言不止仅仅多了个类,类可以明显感觉到抽象和封...
  • me4weizhen
  • me4weizhen
  • 2016年04月17日 17:39
  • 748

面向对象三要素:封装继承多态的阐述及示例

类、封装、继承、多态概念以及实例
  • u010402786
  • u010402786
  • 2016年05月17日 21:03
  • 1167

多态和继承的区别

类和对象的区别 它们的关系是,对象是类的实例,类是对象的模板 面向对象的四要素:封装(wrap)、继承(inheritance)、重载(override)还是多态(polymorphism),亦或是...
  • u010828718
  • u010828718
  • 2015年11月09日 06:35
  • 663
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:继承(代码体现)
举报原因:
原因补充:

(最多只允许输入30个字)