一.子类中如果需要调用父类中的构造函数,则需要使用super(),且必须在构造函数中的第一行

  1. public class Demo1 {
  2. public static void main(String[] args) {
  3. Sub sub=new Sub();
  4. }
  5. }
  6.  
  7. class Base {
  8. public Base() {
  9. System.out.println("Base");
  10. }
  11. }
  12.  
  13. class Sub extends Base {
  14. public Sub() {
  15. //调用父类的构造方法,必须为第一行
  16. super();
  17. System.out.println("Sub");
  18. }
  19. }

运行结果:

Base
Sub

二.用super访问父类中被隐藏的成员变量或方法

有时会遇到子类中的成员变量或方法与父类中的成员变量或方法同名。因为子类中的成员变量或方法名优先级高,所以子类中的同名成员变量或方法就隐藏了父类的成员变量或方法,但是我们如果想要使用父类中的这个成员变量或方法,就需要用到super.

  1. public class Demo2 {
  2. public static void main(String[] args) {
  3. City city=new City();
  4. city.setName();
  5. }
  6. }
  7.  
  8. class Country {
  9. String name;
  10.  
  11. void setName() {
  12. name="China";
  13. }
  14. }
  15.  
  16. class City extends Country {
  17. String name;
  18.  
  19. void setName() {
  20. name="nanjing";
  21. //调用父类的成员方法
  22. super.setName();
  23. System.out.println(name);
  24. //调用父类的成员变量
  25. System.out.println(super.name);
  26. }
  27. }

运行结果:

nanjing
China

三.用super直接传递参数

  1. public class Demo3 {
  2. public static void main(String[] args) {
  3. Chinese ch=new Chinese();
  4. ch=new Chinese("小明");
  5. ch=new Chinese("小花",22);
  6. }
  7. }
  8.  
  9. class Person {
  10. //静态方法
  11. public static void show(String s) {
  12. System.out.println(s);
  13. }
  14.  
  15. public Person() {
  16. show("A Person");
  17. }
  18.  
  19. public Person(String name) {
  20. show("A person name is: "+name);
  21. }
  22. }
  23.  
  24. class Chinese extends Person {
  25. public Chinese() {
  26. //调用父类的构造方法
  27. super();
  28. show("A chinese");
  29. }
  30.  
  31. public Chinese(String name) {
  32. //调用父类具有相同形参的构造方法
  33. super(name);
  34. show("his name is:" +name);
  35. }
  36.  
  37. public Chinese(String name, int age) {
  38. //调用本类具有相同形参的构造方法
  39. this(name);
  40. show("his age is:"+age);
  41. }
  42. }

运行结果:

A Person
A chinese
A person name is: 小明
his name is:小明
A person name is: 小花
his name is:小花
his age is:22

四.super与this的异同

注:本文转载自http://blog.csdn.net/anmei2010/article/details/4093118

Java中super的用法并与this的区别(转载)的更多相关文章

  1. java中super的用法

    在Java中,super关键字有2个用法,一个是访问父类的函数,一个是访问父类的变量,总体来说,就是一个功能,访问父类的成员. 代码如下: class Person { String name ; i ...

  2. java中super的用法总结

    package com.ssm.java; /** * Super * usage1:super. 直接去调用父类的方法和属性. * usage2:放在构造器中的第一位,代表引用父类的构造器. */ ...

  3. java中this的用法?

    2008-07-28 08:10cztx5479 | 分类:JAVA相关 | 浏览4533次 java中this的用法? import java.awt.*; import java.awt.even ...

  4. 转:十八、java中this的用法

    http://blog.csdn.net/liujun13579/article/details/7732443 我知道很多朋友都和我一样:在JAVA程序中似乎经常见到“this”,自己也偶尔用到它, ...

  5. Java 中 synchronized的用法详解(四种用法)

    Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码.本文给大家介绍java中 synchronized的用法,对本文感兴趣的朋友一起看看吧 ...

  6. java成神之——java中string的用法

    java中String的用法 String基本用法 String分割 String拼接 String截取 String换行符和format格式化 String反转字符串和去除空白字符 String获取 ...

  7. java中stringBuilder的用法

    java中stringBuilder的用法 String对象是不可改变的.每次使用 System.String类中的方法之一时,都要在内存中创建一个新的字符串对象,这就需要为该新对象分配新的空间.在需 ...

  8. java中super()和this()、super和this的区别

    1.super()和this()区别: super():调用父类无形参的构造方法: super(形参):调用父类中某个带形参的构造方法: this(形参):调用本类中另一种形式的构造方法: 注意:放在 ...

  9. Python中super的用法【转载】

    Python中super的用法[转载] 转载dxk_093812 最后发布于2019-02-17 20:12:18 阅读数 1143  收藏 展开 转载自 Python面向对象中super用法与MRO ...

随机推荐

  1. [Guava源码分析] Preconditions 前置条件

    我的技术博客经常被流氓网站恶意爬取转载.请移步原文:http://www.cnblogs.com/hamhog/p/3874170.html,享受整齐的排版.有效的链接.正确的代码缩进.更好的阅读体验 ...

  2. ZigBee安全相关

    ZigBee安全由AES加密算法和CCM操作方式作为安全方案,广泛使用在ZigBee联盟的通信协议中.ZDO层负责安全策略和安全配置的管理. Technorati 标签: ZigBee 安全 2. 配 ...

  3. ThreadLocal学习记录

    ThreadLocal简介 当使用ThreadLocal维护变量时,ThreadLocal为每个使用该变量的线程提供独立的变量副本,所以每一个线程都可以独立地改变自己的副本,而不会影响其它线程所对应的 ...

  4. [转]浅析AD Exchange——RTB模式

    在上一篇文章中,我们了解了程序化购买,并且知道程序化购买的最基本的一种RTB的竞价模式,了解了DSP.SSP.Ad Exchange等概念,不清楚的同学可以看看上一篇文章<程序化购买>. ...

  5. java 反射的踩的一个坑

    今天工作的时候用到了一个反射.其业务简单描述为:系统启动时将需要定时调用的方法签名保存到数据库中,开启线程定时从数据库中读取对应的方法签名,通过反射生成实例后调用方法.完成一定的定时任务. 写到的方法 ...

  6. jQuery WIN 7透明弹出层效果

    jQuery WIN 7透明弹出层效果,点击可以弹出一个透明层的jquery特效,插件可以调弹出框的宽度和高度,很不错的一个弹出层插件. 适用浏览器:IE8.360.FireFox.Chrome.Sa ...

  7. mysql rand随机查询记录效率

    一直以为mysql随机查询几条数据,就用 SELECT * FROM `table` ORDER BY RAND() LIMIT 5 就可以了. 但是真正测试一下才发现这样效率非常低.一个15万余条的 ...

  8. JQuery 获取json数据$.getJSON方法的实例代码

    这篇文章介绍了JQuery 获取json数据$.getJSON方法的实例代码,有需要的朋友可以参考一下 前台: function SelectProject() { var a = new Array ...

  9. UDP HelloWord

    Client.cpp #include <stdio.h> #include <winsock2.h> #pragma comment (lib,"ws2_32&qu ...

  10. vs2008中使用Newtonsoft.Json

    异常:找不到方法:“Boolean System.Runtime.Serialization.DataContractAttribute.get_IsReference()” 在使用Newtonsof ...