Java super 那些事儿
来源:互联网 发布:网络商品中介交易 编辑:程序博客网 时间:2024/05/01 01:35
super是this的父辈。从面相对象的角度说,这两个概念是很好理解的。
子类从父类继承过来,父类的protected及以上的属性和方法在子类中是天生就具有的。那么,为什么还要有super这个关键字?
第一、看父类的构造
子类构造时要先调用父类的默认构造函数的,这与C++的构造属性一致。当父类有多个构造函数时,你需要指定调用哪个。这是就需要使用super(arg1,arg2...)。
需要注意的是,在子类的构造函数中调用基类的构造函数时,必须要把super写作最前面,否则报错。
第二,在子类覆盖父类的一些方法中再调用父类的此方法。大家都知道,在子类中覆盖父类的一些方法是面向对象中多态的一种方式,而因为其他种种原因,需要在此方法中调用父类的此方法,用以区分,此时需要使用super来完成。
有了上一篇文章Java this 那些事儿的基础,我们在这里新写一个班干部类来继承上文中的Student类,然后看看super的具体使用方法:
public class ClassLeader extends Student{private String duty;public ClassLeader(){duty = "class monitor";}public ClassLeader(String duty,String name,String college){super(name,college);this.duty = duty;}public void print(){super.print();System.out.println("duty is " + duty);} public static void main(String[] args) { ClassLeader leader = new ClassLeader("life","linc","shenyang");leader.print(); } }将两个类文件放在同一个目录,编译并运行:
D:\workspace\Java\project261\super>javac -d . *javaD:\workspace\Java\project261\super>java ClassLeaderconstructthis student name is lincthis student name is linc college is shenyangname is: linc age is: 20 college is: shenyangduty is life
看看在其他语言中是怎样来处理的:
C#中提供了base关键字来完成super相似的功能,C++直接用基类的名字来调用。
- Java super 那些事儿
- Java编程那些事儿67——this和super
- Java编程那些事儿67——this和super
- Java编程那些事儿67——this和super
- Java编程那些事儿——this和super
- Java编程那些事儿
- Java编程那些事儿
- Java编译那些事儿
- Java this 那些事儿
- Java数组那些事儿
- Java编译那些事儿
- Java正则那些事儿。。
- 曹胜欢,java那些事儿
- Java编程那些事儿
- Java 注解那些事儿
- Java 注解那些事儿
- JAVA的那些事儿
- java虚拟机那些事儿
- ubuntu 12.04 tyy(终端)分辨率设置
- XMPP协议的原理介绍
- 一步一步写算法(之hash表)
- Java大学使用教程(1-3章例题)练手专用
- Mysql 操作符
- Java super 那些事儿
- NP的一些相关概念和认识
- 布林线指标
- C++ STL reserve和resize的区别
- java动态代理
- DIV+CSS基础教程:清除浮动
- 生产者-消费者模式 系列 之二 ReentrantLock, Condition 篇
- 指针与数组
- DevExpress- CheckedListBoxControl DataSource属性存在BUG