java super
来源:互联网 发布:sketch软件介绍 编辑:程序博客网 时间:2024/05/01 04:16
我们已经知道,如果子类中定义的成员变量和父类中的成员变量同名时,则父类中的成员变量不能被继承,此时称子类的成员变量隐藏了父类的成员变 量。当子类中定义了一个方法,并且这个方法的名字,返回类型,用参数个数和类型和父类的某个方法完全相同时,父类的这个方法将被隐藏,既不能被子类继承下 来。如果我们在子类中想使用被子类隐藏的父类的成员变量或方法就可以使用关键字super。
1 使用super调用父类的构造方法
例子24:
public class Example4_24
运行结果
语句,即调用父类的不带参数的构造方法。如果父类没有提供不带参数的构造方法,就会出现错误。
2 使用super操作被隐藏的成员变量和方法
class Sum
class Average extends Sum
public class Example4_25
运行结果
看了上面的用法已经知道super怎么使用,不过使用super的原理和场合有必要加以研究,如下:
关键字super和继承一起建立类和它的父类的紧密联系。继承隐含地指出子类对父类所拥有的访问权限。例如,当我们要调用一个实例方法时,如果实例本身并 没有定义该方法,那我们自然地会得到它的父类中定义的同名方法。尽管会因为方法的覆盖或者使用定义与父类一样的实例或类变量(叫做“隐藏”)而失去这种访 问的权力。这就是为什么要使用super这个关键字,它显式地指出子类可以直接访问父类中的某些部分,尽管有时这种访问会因为种种原因被屏蔽了的方法在其 父类中的原始代码。
子类的构造函数如果要引用super的话,必须把super放在函数的首位,不然会出现这样的报错:
那么在类中用super调用父类构造函数时,为什么调用语句必须是子类的第一条语句?
答案:如果想用super继承父类构造的方法,但是没有放在第一行的话,那么在super之前的语句,肯定是为了满足自己想要完成某些行为的语句,但是又 用了super继承父类的构造方法。那么以前所做的修改就都回到以前了,就是说又成了父类的构造方法了
super是用在子类中,目的是访问直接父类中被屏蔽的成员,注意是直接父类(就是类之上最近的超类)。下面是一个综合运用super的例子,有两个类:一个Father类,一个Father类的子类Son,通过这两个类完全演示了super的用法,一下是代码:
package org.leizhimin;
public class Father {
public String v="Father";
public String x="输出了Father类的public成员变量x!!!";
public Father() {
System.out.println("Father构造方法被调用!");
}
public Father(String v){
this.v="Father类的带参数构造方法!运行了.";
}
public void outinfo(){
System.out.println("Father的outinfo方法被调用");
}
}
package org.leizhimin;
public class Son extends Father{
}
子类Son运行结果:
Father构造方法被调用!
Son无参数构造方法被调用!
------1-----
哈哈哈哈!
Son
Father
------2-----
输出了Father类的public成员变量x!!!
输出了Father类的public成员变量x!!!
------3-----
Son的outinfo()方法被调用
Son的outinfo()方法被调用
Father的outinfo方法被调用
0 0
- JAVA-super
- super java
- java super
- java:super
- 巩固java(四)----super和super()
- Java中super
- Java中的super()
- Java this&super &final
- java super 、this
- java super extends
- java super关键字理解
- java super用法
- super this java
- java基础 super用法
- java中的关键字super
- JAVA SUPER的学习
- Java super 那些事儿
- [Java][hoj]Super Calculator
- 15 java.util.BitSet
- 网络安全学习网站
- UNIX编程——管道和FIFO
- HTML+CSS+JavaScript+JQuery+JSP学习笔记
- Ⅰ.6 如何创建和使用Synchronization Points
- java super
- LintCode-剑指Offer-(174)删除链表中倒数第n个节点
- 关于Popupwindow的一些理解
- Leveldb源码分析之Slice
- Codeforces 599A Patrick and Shopping 【水题】
- 【FastDev4Android框架开发】RecyclerView完全解析之结合AA(Android Annotations)注入框架实例(三十)
- 算法导论 第三章 函数的增长 3.2习题个人解答
- 数学史上著名的常量
- A*寻路算法入门(一)