1.super关键字可以在子类的构造方法中显示地调用父类的构造方法,super()必须为子类构造函数中的第一行。

2.super可以用来访问父类的成员方法或变量,当子类成员变量或方法与父类有相同的名字时也会覆盖父类的成员变量或方法,这个时候要想访问父类的成员变量或方法只能通过super关键字来访问,子类方法中的super.方法名()不需要位于第一行。

package test;

class FatherClass {
public int value;
public void f() {
value=100;
System.out.println("父类的value属性值="+value);
}
public FatherClass(){
System.out.println("FatherClass constructor");
}
} class ChildClass extends FatherClass {
/**
* 子类除了继承父类所具有的value属性外,自己又另外声明了一个value属性,
* 也就是说,此时的子类拥有两个value属性。
*/
public ChildClass(){
super();
System.out.println("ChildClass constructor");
}
public int value;
/**
* 在子类ChildClass里面重写了从父类继承下来的f()方法里面的实现,即重写了f()方法的方法体。
*/
public void f() {
//使用super作为父类对象的引用对象来调用父类对象里面的f()方法
//这个value是子类自己定义的那个value,不是从父类继承下来的那个value
value=200;
super.f(); //父类的value属性值=100
System.out.println("子类的value属性值="+value); //子类的value属性值=200
//打印出来的是子类自定义的那个value的值,这个值是200
System.out.println(value); //200
/**
* 打印出来的是父类里面的value值,由于子类在重写从父类继承下来的f()方法时,
* 第一句话“super.f();”是让父类对象的引用对象调用父类对象的f()方法,
* 即相当于是这个父类对象自己调用f()方法去改变自己的value属性的值,由0变了100。
* 所以这里打印出来的value值是100。
*/
System.out.println(super.value); //100
}
}
public class SuperKeyTest {
public static void main(String[] args) {
ChildClass cc = new ChildClass();
cc.f();
}
}

最新文章

  1. python高级之网络编程
  2. C++中string查找和取子串和整形转化
  3. 封装用className选元素
  4. POJ 1236 Network of Schools (Tarjan + 缩点)
  5. MyBatis学习总结_09_使用MyBatis Generator自动创建代码
  6. javascript的几种时间格式
  7. 高级UIKit-09(TCPSocket发送文件、上传和下载)
  8. 201521123102 《Java程序设计》第6周学习总结
  9. 发布npm时遇到的两个小问题,解决方法
  10. 003Java语言环境搭建
  11. Box布局
  12. Linux PHP多版本切换 超简单办法
  13. 21 viewPager--- hzScrollView ----llContainer
  14. echarts在tab切换时容器宽度设置为100%,只展示100px
  15. Java的URL类(一)
  16. 手把手教你实现Confluence6.7.1安装与破解
  17. Windows 下使用 MinGW 和 CMake 进行开发
  18. C#发布程序添加其他程序文件
  19. CS229 6.10 Neurons Networks implements of softmax regression
  20. Quartz2D简单图形

热门文章

  1. servlet操作本地文件汇总: 判断文件是否存在;文件重命名;文件复制; 获取文件属性信息,转成Json对象; 获取指定类型的文件; 查找替换.txt中的文本
  2. mysql 的快速入门
  3. js★★★【面向对象的使用方法】*****************★★★★ 相当重要
  4. cocos Studio使用问题
  5. vue路由的懒加载
  6. netstat和net命令粗谈
  7. c语言实现两个单链表的交叉合并
  8. 2018-软工机试-D-定西
  9. Vue开发爬坑记录
  10. oracle针对某列让特定信息排序[decode]