【安卓学习笔记】JAVA基础Lesson8-函数的复写与super用法
2017-08-27 22:05
716 查看
1、函数的复写(override)
函数的复写(override)在中文叫法里面有很多叫法,重写、覆盖等;
函数的复写简单的可以定义成在父子管理的两个类当中存在两个定义完全相同的函数,
函数的定义包括了函数名、返回参数类型、传入的参数列表。
例如:
执行结果如下:
上述代码包含含有两个类,一个是父类Lesson8_father,和一个继承Lesson8_father的子类Lesson8_son;子类除包含了父类的成员函数和成员变量之外,新定义了一个char型的成员变量ch;父类和子类都包含有定义上完全相同的成员函数Function();这就是函数的复写(override)。其中由代码可以看到这两个函数在功能却并不完全一样。子类在父类的基础上进行了补充。这也体现了函数复写的功能:对继承到的方法体进行扩展;但是现在在代码上来看:子类的代码包含了父类的代码,代码重复了。这个方法又有新的办法来解决;这个方法就是super的用法;
2、使用super调用父类的成员函数
修改上述子类:
这样的结果是一样的,也达到了减少重复代码的目的,这个跟this的用法也是一致的。只是this调用的是本类的函数体,而super调用的是父类的函数体;
3、总结:
this和super的用法:
this:
this用来调用本类的成员函数和构造函数
调用构造函数使用this();并且只能使用一次,同时需要把这条语句放在本函数体的首位,传入的参数列表决定了调用哪一个构造函数;
调用成员函数使用this.xxx();可以在任意处任意条数调用。
super:
用法和this类似,区别是调用不在是本类而是父类;
By Urien 2017年8月29日 10:00:13
函数的复写(override)在中文叫法里面有很多叫法,重写、覆盖等;
函数的复写简单的可以定义成在父子管理的两个类当中存在两个定义完全相同的函数,
函数的定义包括了函数名、返回参数类型、传入的参数列表。
例如:
class Lesson8_father{ String str; int num; void Function(){ System.out.println("the father_str is " + this.str + ",the father_num is" + this.num); } } class Lesson8_son extends Lesson8_father{ char ch; void Function(){ System.out.println("the son_str is " + this.str + ",the son_num is" + this.num); System.out.println("the son_char is " + this.ch ); } } class Test{ public static void main(String args []){ Lesson8_son son = new Lesson8_son(); son.str = "abc"; son.num = 123; son.ch = 'C'; son.Function(); Lesson8_father father = new Lesson8_father(); father.str = "cba"; father.num = 321; father.Function(); } }
执行结果如下:
D:\Android\src>javac Lesson8.java D:\Android\src>javac Test.java D:\Android\src>java Test the son_str is abc,the son_num is123 the son_char is C the father_str is cba,the father_num is321 D:\Android\src>
上述代码包含含有两个类,一个是父类Lesson8_father,和一个继承Lesson8_father的子类Lesson8_son;子类除包含了父类的成员函数和成员变量之外,新定义了一个char型的成员变量ch;父类和子类都包含有定义上完全相同的成员函数Function();这就是函数的复写(override)。其中由代码可以看到这两个函数在功能却并不完全一样。子类在父类的基础上进行了补充。这也体现了函数复写的功能:对继承到的方法体进行扩展;但是现在在代码上来看:子类的代码包含了父类的代码,代码重复了。这个方法又有新的办法来解决;这个方法就是super的用法;
2、使用super调用父类的成员函数
修改上述子类:
class Lesson8_son extends Lesson8_father{ char ch; void Function(){ super.Function(); //System.out.println("the son_str is " + this.str + ",the son_num is" + this.num); System.out.println("the son_char is " + this.ch ); } }
这样的结果是一样的,也达到了减少重复代码的目的,这个跟this的用法也是一致的。只是this调用的是本类的函数体,而super调用的是父类的函数体;
3、总结:
this和super的用法:
this:
this用来调用本类的成员函数和构造函数
调用构造函数使用this();并且只能使用一次,同时需要把这条语句放在本函数体的首位,传入的参数列表决定了调用哪一个构造函数;
调用成员函数使用this.xxx();可以在任意处任意条数调用。
super:
用法和this类似,区别是调用不在是本类而是父类;
By Urien 2017年8月29日 10:00:13
相关文章推荐
- 【安卓学习笔记】JAVA基础Lesson4-函数重载与构造函数
- 【安卓学习笔记】JAVA基础Lesson7-继承
- 【安卓学习笔记】JAVA基础Lesson6-关键字static
- 【安卓学习笔记】JAVA基础Lesson1-简介与变量
- 【安卓学习笔记】JAVA基础Lesson9-对象的转型
- 【安卓学习笔记】JAVA基础Lesson5-关键字this
- 【安卓学习笔记】JAVA基础Lesson3-面向对象和类
- 【安卓学习笔记】JAVA基础Lesson2-JDK安装与环境配置
- 【安卓学习笔记】JAVA基础Lesson12-接口
- Java学习笔记---14.面向对象编程09-Java中重载与复写的区别、super与this的比较
- JAVA学习笔记-函数的复写(override)
- java 从零开始,学习笔记之基础入门<SQL_Server_视图_函数_存储过程_触发器等>(二十三)
- Java基础视频教程第03天_学习笔记之循环结构、函数
- java学习笔记:Java语法基础2(循环,函数,重载,数组,方法)
- Java学习笔记---13.面向对象编程08-Java中继承的概念,子类实例化过程,super()及方法复写
- 黑马程序员_毕向东_Java基础_DAY03_函数_学习笔记
- [原]java专业程序代写(qq:928900200),学习笔记之基础入门<Oracle_函数_触发器_游标_存储过程_视图>(三十五)
- java基础学习笔记第三天 this . static 的用法和值传递,引用传递
- 黑马程序员 java学习笔记之一(java中this和super关键字的用法)
- java基础学习总结——super的几种用法并与this的区别