一、基础概念

  (一)super关键字

    super关键字的用法和this相似。this代表的是当前对象。super代表的是父类中内存空间。

    子父类中是不会出现同名属性的情况。

  (二)继承中、成员变量问题

    当成员变量中出现了同名的局部变量,用关键字 this来区分。当父类中出现了同名的成员变量,用关键字 super来区分

  (三)继承中,成员函数问题

    1、子父类中出现一样的方法(返回值类型、函数名、参数列表等都一样),创建子类对象调用该方法时,运行的是子类中的方法。

    2、这种情况称之为函数的另一个特性----(override)覆盖、重写、复写。

    3、注意:

       子类覆盖父类权限必须大于等于父类的权限。

       覆盖中,静态只能覆盖静态,或者被静态覆盖。

  (四)继承中,构造函数问题

    1、创建子类对象,父类中的构造函数也会运行的原因:子类的所有构造函数中的第一行,都有一个默认访问父类中空参数的构造函数super();

    2、调用本类中的构造函数使用this([实参列表])语句。调用父类中的构造函数用super([实参列表])语句。

    3、子类实例化的过程,必须先执行父类中的初始化的原因:子类继承了父类中的内容,所以子类在实例化时,必须要先执行父类中的内容。

    4、注意:

       如果父类中没有空参数的构造函数时,子类的构造函数必须通过super语句指定要访问的父类中的构造函数。

       this()语句和super()语句都必须出现在构造函数的第一行。因为初始化的动作要先执行。所以this()语句和super()语句只能存在一个。

二、实例代码(一)

  1. class Fu //默认继承 object
  2. {
  3. int num = ;
  4. public void show()
  5. {
  6. System.out.println("父类中的成员函数show ......" );
  7. }
  8. Fu()
  9. {
  10. //默认存在语句superz();
  11. //显示初始化。
  12. //构造代码块初始化。
  13. System.out.println("父类中的构造函数Fu ......");
  14. }
  15. Fu(int x)
  16. {
  17. //默认存在语句super();
  18. System.out.println("父类中的构造函数Fu ......"+x);
  19. }
  20. }
  21. class Zi extends Fu
  22. {
  23. //子类和父类的成员变量一样的情况
  24. int num = ;
  25. //子类和父类的成员函数一样的情况,进行了覆盖
  26. public void show()
  27. {
  28. //局部变量与成员变量也一样的情况
  29. int num = ;
  30. System.out.println("子类中的成员函数show ...... ");
  31.  
  32. System.out.println("num = "+num);//输出子类中局部变量num的值
  33. System.out.println("num = "+this.num);//输出子类中成员变量num的值
  34. System.out.println("num = "+super.num);//输出父类中成员变量num的值
  35. }
  36. //子类和父类的构造函数一样的情况。子类和父类的语句都执行。
  37. Zi()
  38. {
  39. //默认存在语句super();
  40.  
  41. System.out.println("子类中的构造函数zi ......" );
  42. }
  43. Zi(int x)
  44. {
  45. //默认存在语句super();
  46. super();//显示指定super的方式来访问父类中的构造函数。必须定义在第一行
  47. System.out.println("子类中的构造函数Zi ......"+x);
  48. }
  49. }
  50. class SuperDemo
  51. {
  52. public static void main(String[] args)
  53. {
  54. Zi z1 = new Zi();
  55. z1.show();
  56. Zi z2 = new Zi();
  57. z2.show();
  58. }
  59. }

  代码运行

  

(三)、实例代码(二)

  1. class Person
  2. {
  3. private String name;
  4. private int age;
  5.  
  6. //父类Person的构造函数
  7. Person(String name,int age)
  8. {
  9. this.name = name;
  10. this.age = age;
  11. }
  12. public void setName(String name)
  13. {
  14. this.name = name;
  15. }
  16. public void setAge(int age)
  17. {
  18. this.age = age;
  19. }
  20. public String getName()
  21. {
  22. return name;
  23. }
  24. public int getAge()
  25. {
  26. return age;
  27. }
  28. }
  29. //Student继承Person
  30. class Student extends Person
  31. {
  32. Student(String name,int age)
  33. {
  34. super(name,age);//用super调用父类Person的构造函数。
  35. }
  36. public void study()
  37. {
  38. System.out.println("name: "+this.getName()+" age: "+this.getAge()+" study ......");
  39. }
  40. }
  41. //Worker继承Person
  42. class Worker extends Person
  43. {
  44. Worker (String name,int age)
  45. {
  46. super(name,age);////用super调用父类Person的构造函数。
  47. }
  48. public void work()
  49. {
  50. System.out.println("name: "+this.getName()+" age: "+this.getAge()+" work ......");
  51. }
  52. }
  53. class SuperDemo1
  54. {
  55. public static void main(String[] args)
  56. {
  57. Student p1 = new Student("xiaohong",);
  58. p1.study();
  59. Worker p2 = new Worker("xiaoming",);
  60. p2.work();
  61. }
  62. }

  代码运行

  

Java面向对象之关键字super 入门实例的更多相关文章

  1. Java面向对象之关键字static 入门实例

    一.基础概念 静态关键字 static 是成员修饰符,直接用于修饰成员. (一)特点: 1.被静态修饰的成果,可以直接被类名所调用. 2.静态成员优先于对象存在. 3.静态成员随着类的加载而加载.随着 ...

  2. Java面向对象之关键字final 入门实例

    一.基础概念 1.关键字final可以修饰类.函数.变量. 2.关键字final修饰的类不可以被继承. 3.关键字final修饰的方法不可以被覆盖. 4.关键字final修饰的变量是一个常量,只能被赋 ...

  3. Java面向对象之关键字this 入门实例

    一.基础概念 1.关键字this是指:哪个对象调用this所在的函数.this就指向当前这个对象. 2.用法: (1).this关键字可以解决:构造函数私有化问题. 注意:构造函数只能被构造函数调用, ...

  4. Java面向对象之接口interface 入门实例

    一.基础概念 (一)接口可以简单的理解为,是一个特殊的抽象类,该抽象类中的方法都是抽象的. 接口中的成员有两种:1.全局常量 2.抽象方法 定义接口用关键字interface,接口中的成员都用固定的修 ...

  5. Java面向对象之抽象类abstract 入门实例

    一.基础概念 抽象事物,是若没有具体的信息可以描述这个事物,这个事物可以称为抽象事物. 抽象类,是不断的向上抽取而来.抽取方法声明而不确定具体的方法内容.由不同的子类来完成具体的方法内容. (一)抽象 ...

  6. Java面向对象之继承extends 入门实例

    一.基础概念 (一)继承的好处: 1.继承:提高了代码的复用性. 2.让类与类之间产生了关系,给多态这个特征提供了前提. (二)继承的种类: 1.单继承:一个类只能有一个父类. 2.多继承:一个类可以 ...

  7. JAVA面向对象-----final关键字

    JAVA面向对象-–final关键字 1:定义静态方法求圆的面积 2:定义静态方法求圆的周长 3:发现方法中有重复的代码,就是PI,圆周率. 1:如果需要提高计算精度,就需要修改每个方法中圆周率. 4 ...

  8. Java面向对象-static关键字、静态方法与普通方法、静态成员变量

    Java面向对象-static关键字.静态方法与普通方法 static关键字的基本作用:方便在没有创建对象的情况下来进行调用(方法/变量). 很显然,被static关键字修饰的方法或者变量不需要依赖于 ...

  9. Java面向对象----继承概念,super关键字

    继承概念: 继承需要符合的关系  is-a  , 父类通用更抽象,子类更特殊更具体 类之间的关系 继承体现 组合体现 实现接口体现 继承的意义 代码重用 体现不同抽象层次 extends关键字 Sup ...

随机推荐

  1. 软件部需求,内容采集,显示内容图文列表,MongoDB数据导入导出JSON

    全局变量 由于多个html页面,需要引用同一个变量.这个时候,需要定义一个全局变量!如何定义呢? 默认包含了mui的html文件都导入mui.js文件.那么将变量写在mui.js中,就可以实现所有页面 ...

  2. clock函数返回负值~ (转)

    使用clock() 函数来进行计时,时不时的返回一个很大的负数,怎么检查也检查不出错误,现在找出错误原因,给大家分享一下. 来源网页:http://kebe-jea.blogbus.com/logs/ ...

  3. 实例解说Linux命令行uniq

    Linux命令uniq的作用是过滤重复部分显示文件内容,这个命令读取输入文件,并比较相邻的行.在正常情况下,第二个及以后更多个重复行将被删去,行比较是根据所用字符集的排序序列进行的.该命令加工后的结果 ...

  4. IAR FOR ARM 各版…

    用过Keil和IAR,个人感觉是IAR还是很不错的.下载地址是: http://files.iar.com/ftp/pub/box/CD-EWARM-6301-3142.zip V6.30.1(该地址 ...

  5. Leetcode:Substring with Concatenation of All Words分析和实现

    题目大意是传入一个字符串s和一个字符串数组words,其中words中的所有字符串均等长.要在s中找所有的索引index,使得以s[index]为起始字符的长为words中字符串总长的s的子串是由wo ...

  6. libevent源码深度剖析一

    libevent源码深度剖析一 ——序幕 张亮 1 前言 Libevent是一个轻量级的开源高性能网络库,使用者众多,研究者更甚,相关文章也不少.写这一系列文章的用意在于,一则分享心得:二则对libe ...

  7. php opcode

    opcode是计算机指令中的一部分,用于指定要执行的操作, 指令的格式和规范由处理器的指令规范指定. 除了指令本身以外通常还有指令所需要的操作数,可能有的指令不需要显式的操作数. 这些操作数可能是寄存 ...

  8. 单机配置tomcat 8 集群

    如何能在集群中的多个节点之间保持数据的一致性,会话(Session)信息是这些数据中最重要的一块. 本文当采用tomcat默认集群配置(<Cluster className="org. ...

  9. python3--生成器并行运算

    # Auther: Aaron Fan """def consumer(name): print("%s 准备吃包子啦!" % name) while ...

  10. Sqlserver中的几把锁和.net中的事务级别

    当数据表被事务锁定后,我们再进行select查询时,需要为with(锁选项)来查询信息,如果不加,select将会被阻塞,直到锁被释放,下面介绍几种SQL的锁选项 SQL的几把锁 NOLOCK(不加锁 ...