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

构造 多态 this 小结

时间:2016-04-29 00:03:58      阅读:187      评论:0      收藏:0      [点我收藏+]

标签:


构造方法
1、private 修饰的构造函数不被子类继承。
2、定义类时,若没有显示定义构造器,则存在默认的无参构造器;若已定义,则不再有默认的无参构造器,除非显示的定义了无参构造器。
3、子类构造器的第一条语句若没有显示调用父类的构造器,则默认都是调用了父类的无参构造器;若父类没有无参构造器(或为私有),则必须用 super(参数)显示调用父类的有参构造器。
4、生成子类对象时,首先会调用父类的构造函数(原因请看上一条),且父类的构造函数中引用的函数遵循多态的原则(即:父类构造函数中调用的非静态方法实际是子类中定义的方法)。
5、构造函数之间可以相互调用,例如,子类无参构造函数可以调用父类或子类的有参构造函数。
6、构造函数不能有返回值,但允许一个普通函数和构造函数同名同参数列表(当然有返回值)。

多态
1、仅当此成员为【非静态】【函数】时是多态(运行的是子类的方法)。
2、若此成员是【静态】函数或【变量】,则运行的是父类的成员。
3、若父类没有此成员,仅子类有此成员,则编译失败。
4、若再执行向下转型 ZI z =(ZI) f ;则 z.成员 ;访问的全部是子类的成员。
5、若f 原本不是ZI类型,比如是FU的另一子类型ZI1;则以上转型编译不通过。
6、可以通过f instanceof ZI ;来判断f是否是ZI类型。
7、不允许一个类中存在函数名、参数列表完全相同的两个函数。
8、所以不允许子类中存在和父类函数名、参数列表相同但或返回值不同,或一个静态一个非静态的函数(但允许作用域大于父类,不允许作用域小于父类)。
9、成员变量没有多态的概念,父类中有的成员变量,子类要么直接继承拿来用,要么重新定义一个,比如父类定义了一个变量int a=1;子类若想改变此值,只能用int a=2重新定义一个变量,而不能用a=2来赋值。既然如此,我的理解是:父类中的此变量被子类覆盖了,也即子类中不再具有父类中的此变量,但是貌似不是这样的。不过,要注意的是,子类的构造方法中可以对从父类继承过来的变量重新赋值,这也是构造方法的作用之一了。
10、同样的道理,父类的静态成员变量、final 类型的变量在子类中均可以重新定义为任意类型的变量
11、事实上,类中的成员变量都应该设置为private(封装)或static(共享--常常为了方便调用)

this
1、当成员变量和局部变量重名,可以用关键字this来区分。
2、 this 代表当前对象,就是所在函数所属对象的引用。简单说,哪个对象调用了this所在的函数,this就代表哪个对象。
3、 this 也可以用于在构造函数中用于调用其他构造函数,但只能定义在构造函数的第一行,因为初始化动作要先执行。





构造 多态 this 小结

标签:

原文地址:http://www.cnblogs.com/baiqiantao/p/5444768.html

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