一、基础概念

  (一)super关键字

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

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

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

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

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

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

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

    3、注意:

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

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

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

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

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

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

    4、注意:

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

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

二、实例代码(一)

 class Fu    //默认继承 object
{
int num = ;
public void show()
{
System.out.println("父类中的成员函数show ......" );
}
Fu()
{
//默认存在语句superz();
//显示初始化。
//构造代码块初始化。
System.out.println("父类中的构造函数Fu ......");
}
Fu(int x)
{
//默认存在语句super();
System.out.println("父类中的构造函数Fu ......"+x);
}
}
class Zi extends Fu
{
//子类和父类的成员变量一样的情况
int num = ;
//子类和父类的成员函数一样的情况,进行了覆盖
public void show()
{
//局部变量与成员变量也一样的情况
int num = ;
System.out.println("子类中的成员函数show ...... "); System.out.println("num = "+num);//输出子类中局部变量num的值
System.out.println("num = "+this.num);//输出子类中成员变量num的值
System.out.println("num = "+super.num);//输出父类中成员变量num的值
}
//子类和父类的构造函数一样的情况。子类和父类的语句都执行。
Zi()
{
//默认存在语句super(); System.out.println("子类中的构造函数zi ......" );
}
Zi(int x)
{
//默认存在语句super();
super();//显示指定super的方式来访问父类中的构造函数。必须定义在第一行
System.out.println("子类中的构造函数Zi ......"+x);
}
}
class SuperDemo
{
public static void main(String[] args)
{
Zi z1 = new Zi();
z1.show();
Zi z2 = new Zi();
z2.show();
}
}

  代码运行

  

(三)、实例代码(二)

 class Person
{
private String name;
private int age; //父类Person的构造函数
Person(String name,int age)
{
this.name = name;
this.age = age;
}
public void setName(String name)
{
this.name = name;
}
public void setAge(int age)
{
this.age = age;
}
public String getName()
{
return name;
}
public int getAge()
{
return age;
}
}
//Student继承Person
class Student extends Person
{
Student(String name,int age)
{
super(name,age);//用super调用父类Person的构造函数。
}
public void study()
{
System.out.println("name: "+this.getName()+" age: "+this.getAge()+" study ......");
}
}
//Worker继承Person
class Worker extends Person
{
Worker (String name,int age)
{
super(name,age);////用super调用父类Person的构造函数。
}
public void work()
{
System.out.println("name: "+this.getName()+" age: "+this.getAge()+" work ......");
}
}
class SuperDemo1
{
public static void main(String[] args)
{
Student p1 = new Student("xiaohong",);
p1.study();
Worker p2 = new Worker("xiaoming",);
p2.work();
}
}

  代码运行

  

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. Educational Codeforces Round 45 (Rated for Div. 2)

    A bracket sequence is a string containing only characters "(" and ")". A regular ...

  2. Python绘图matplotlib

    转自http://blog.csdn.net/ywjun0919/article/details/8692018 Python图表绘制:matplotlib绘图库入门 matplotlib 是pyth ...

  3. 【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 3_Linear Algebra Review

    Lecture3   Linear Algebra Review 线性代数回顾 3.1 矩阵和向量3.2 加法和标量乘法3.3 矩阵向量乘法3.4 矩阵乘法3.5 矩阵乘法的性质3.6 逆.转置 3. ...

  4. java基础之io流总结二:File类基本应用

    File类的概述: File类是对文件系统中文件以及文件夹进行封装的对象,可以通过对象的思想来操作文件和文件夹. File类保存文件或目录的各种元数据信息,包括文件名.文件长度.最后修改时间.是否可读 ...

  5. 【HDU6026】Deleting Edges

    题意 有一个n个节点的无向图,结点编号从0-n-1,每条边的长度时1to9的一个正整数.现在要删除一些边(或者不删),使得到的新图满足下面两个要求. 1.新图是一颗树有n-1条边2.对于每个结点v(0 ...

  6. ubuntu16.04 Mask_RCNN AlphaPose OpenPose Librealsense

    #############MaskRCNNcource activate flappbirdcd /home/luo/Desktop/MyFile/MaskRCNN/MyOwnMaskRCNN1/sa ...

  7. spring aop自动代理注解配置之一

    <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...

  8. Python 安装urllib3

    一.系统环境 操作系统:Win10 64位 Python版本:Python 3.7.0 二.报错信息 No module named 'urllib3' 三.安装参考 1.参照网上的安装方法通过pip ...

  9. lucene 第二天

    Lucene/Solr   第二天 1. 课程计划 Lucene的Field Lucene的索引库维护 lucene的查询 a) Query子对象 b) QueryParser Lucene相关度排序 ...

  10. Rails 和 Django 的深度技术对比

    我想以一个免责声明来开始下面的内容.我使用 Django开发网站已经有三年了,众所周知,我喜欢Django.我已经写了一个开源的应用程序( app),并且我已经将补丁发送到了Django.然而,我以尽 ...