知识点:

在java类中使用super引用父类的成分,用this引用当前对象

this可以修饰属性、构造器、方法

super可以修饰属性、构造器、方法

关于子类实例化过程中的内存分配,在下一篇博客中说明一下(https://www.cnblogs.com/shuaifing/p/10684485.html)

一:this关键字

this可以修饰属性、构造器、方法;用this引用当前对象

(1)this修饰属性,调用类的属性

  1. //set方法
    public void setName(String name) {
    this.name = name;
    }
  2.  
  3. //有参数构造函数
  1. public Person(String name){
    this.name=name;
    }
  2.  
  3. 2this修饰构造器,在构造器中通过 this(形参)的方式显示地调用本类中,其他重载的指定的构造器(在构造器内部必须声明在首行)
  1. public Person(){
    System.out.println("调用当前类的无参构造函数");
    }
    public Person(String name){
    this();//调用本类中无参构造函数
    this.name=name;
    }
  2.  
  3. public Person(String name,int age){
    this(name); //在构造器中通过 this(形参)的方式显示地调用本类中,其他重载的指定的构造器(在构造器内部必须声明在首行)
    this.age=age;
    }
  1. 3this修饰成员方法,调用类的方法
  1. public void showInfo(){
    System.out.println("调用当前类的成员方法showInfo");
    }
    public void showAllInfo(){
    this.showInfo();
    System.out.println("调用当前类的成员方法showAllInfo");
    }
  2.  
  3. 二:super关键字
  4. super可以修饰属性、构造器、方法;super引用父类的成分

    1super修饰属性,引用父类的属性
    当子类与父类的属性同名时,通过“super.属性”显示地调用父类中声明的属性
    调用子类的同名属性,使用“this.属性”
    //动物
    public class Animal{
    public String gender="男";//性别
  5.  
  6. public Animal(){
    this.name="张三";
    System.out.println("动物无参构造函数!");
    }
  1. }
  1. //人
    public class Person extends Animal {
    public Person(){
    super.gender="女";//子类无参构造函数中,调用父类的属性,并修改父类的gender属性
    System.out.println("人无参构造函数!");
    }
  1. }
  1. 2super修饰构造方法,引用父类的构造方法
    一般在子类中使用“super(形参列表)”来显示地调用父类中的构造方法
    a.在构造方法内部,super(形参列表)必须申明在首行
    b.在构造方法内部,因为this(形参列表)也必须声明在首行,所以this(形参列表)或者super(形参列表),只能出现一个
    c.当子类构造器中,不显地调用“this(形参列表)”或者super(形参列表)其中任何一个,默认调用的是父类的空参构造函数
    //生物
    public class Creature {
    public Creature(){
    //进入到Creature类的无参构造函数后,首先会调用父类Object的无参构造函数(object中隐藏了)
    //super()无参的构造函数,不写的话,默认有的
    System.out.println("生物无参构造函数!");
    }
    }
  1. //动物
    public class Animal extends Creature{
    public Animal(){
    super();//进入到Animal类的无参构造函数后,首先会调用父类Creature的无参构造函数,实例化父类Creature实例
    System.out.println("动物无参构造函数!");
    }
    }
  1. //人
    public class Person extends Animal {
    public Person(){
    super();//进入到person类的无参构造函数后,首先会调用父类Animal的无参构造函数,实例化父类Animal实例
    System.out.println("人无参构造函数!");
    }
  1. }
  1. //测试类
  1. public class Test {
    public static void main(String[] args) {
    Person p=new Person();//初始化p实例时,会调用Person类的无参构造函数
    }
    } 
  2.  
  3. 运行结果:
  1.  3super修饰成员方法,引用父类的成员方法
    当子类重写父类的方法后,在子类中,想显示地调用父类中被重写的方法,可以使用“super.方法”
  1. //动物
    public class Animal extends Creature{
  2.  
  3. //展示动物属性方法
    public void showInfo(){
    System.out.println("展示动物属性方法");
    }
  1. }
  1. //人
    public class Person extends Animal {
    //展示人类属性方法
    @Override
    public void showInfo(){
  1. System.out.println("展示人类属性方法");
    super.showInfo();
    }
    }
  1.  

总结java中的super和this关键字的更多相关文章

  1. JAVA中的super和this关键字的使用

    一 this关键字 this关键字可以出现在构造方法和实例方法中,不能出现在静态方法中,这是因为静态方法可以用类名来调用,这时可能还没有任何对象诞生. this主要有两种用法: 1 用在构造方法中,调 ...

  2. Java中的break和continue关键字使用总结

    java中的break和continue关键字使用总结   一.作用和区别   break的作用是跳出当前循环块(for.while.do while)或程序块(switch).在循环块中的作用是跳出 ...

  3. Java中的super与this解析

    好了,现在开始讨论this&super这两个关键字的意义和用法. 在Java中,this通常指当前对象,super则指父类的.当你想要引用当前对象的某种东西,比如当前对象的某个方法,或当前对象 ...

  4. Java中替代C# ref/out 关键字方案:

    刚学习Java不久,今天遇到一个问题,需要在方法中修改传入的对象的值,确切的说是需要使用一个方法,创建一个对象,并把其引用返回,熟悉C#的我的第一反应就是C#中的ref/out关键字,结果发现Java ...

  5. 从缓存入门到并发编程三要素详解 Java中 volatile 、final 等关键字解析案例

    引入高速缓存概念 在计算机在执行程序时,以指令为单位来执行,每条指令都是在CPU中执行的,而执行指令过程中,势必涉及到数据的读取和写入. 由于程序运行过程中的临时数据是存放在主存(物理内存)当中的,这 ...

  6. Java中的static、final关键字

    static static 的含义是静态的,是一个静态修饰符,一般来说,被static修饰的有以下几种,类.变量.方法.代码块. static修饰类 Java中普通的类是不允许被声明为静态的,但是有一 ...

  7. java中的super限定

    super的用法: (1)如果需要在子类中调用父类中被覆盖的实例方法,可以用super限定来调用父类中被覆盖的方法.当然,也可以调用从父类继承的实例变量. public void callOverri ...

  8. java中static,super,final关键字辨析

    1:static关键字 利:1)对对象的共享数据提供单独的空间存储. 2)修饰的方法可以直接被类名调用 弊:1)生命周期长. 2)访问出现限制(只能访问静态) 它可以有静态方法,静态类,静态变量 2: ...

  9. Java中的super关键字和this关键字作用介绍

    一.super关键字的作用 1.子类在构造方法中显示调用父类构造方法 super可以在子类的构造方法中显示调用父类的构造方法:并且这行代码必须出现在子类构造方法的第一行.原因:因为父类构造方法没有执行 ...

随机推荐

  1. PS快速制作下雪效果

    PS快速制作下雪效果 具体的制作步骤如下: 1.打开PS,打开素材,打开窗口-动作 2.创建新动作,参数如下图 3.回到图层,建立一个图层,填充黑色,如下图 4.滤镜-像素化-点状化,参数如下图 5. ...

  2. mysql 数据库的操作

    1.数据库的查看 1)查看mysql中所有的数据库    "show databases;" mysql> show databases; +---------------- ...

  3. mysql 字符串类型 char varchar

    字符类型用在存储名字.邮箱地址.家庭住址等描述性数据   char指的是定长字符,varchar指的是变长字符 #官网:https://dev.mysql.com/doc/refman/5.7/en/ ...

  4. 在sublime3中docblockr插件配置apidoc接口文档注释模板

    写在前面: 将进行3个步骤配置 1.在sublime3中安装插件docblockr,可以参考http://www.cnblogs.com/jiangxiaobo/p/8327709.html 2.安装 ...

  5. 使用vue如何默认选中单选框

    使用了vue以后,发现这真的是一个灵活高效的框架,能够轻松实现页面的实时刷新.那么,今天先聊聊单选框的使用.一般我们使用单选框,会这么写: //HTML <input type=" c ...

  6. [py]类和实例方法/内建方法

    内建方法 dir(__builtins__) 类和实例方法对比 class person: def __init__(self, job): self.job = job name = "m ...

  7. Hat's Fibonacci

    http://acm.hdu.edu.cn/showproblem.php?pid=1250 大数斐波那契 %08d是什么东西,为什么我用flag交不上,唉,不刷大数了,没劲.暑假再讲. 就是交不上 ...

  8. XenServer:使用XenCenter开设VPS(多图完整版)

    打铁要趁热,咱们接着来玩XenServer.昨天赵容用机房提供的KVM给服务器装了XenServer,今天我们来玩更有意思的:开小鸡.装好XenServer之后,访问我们的服务器IP,就可以看到Xen ...

  9. 算法---数组总结篇2——找丢失的数,找最大最小,前k大,第k小的数

    一.如何找出数组中丢失的数 题目描述:给定一个由n-1个整数组成的未排序的数组序列,其原始都是1到n中的不同的整数,请写出一个寻找数组序列中缺失整数的线性时间算法 方法1:累加求和 时间复杂度是O(N ...

  10. 9/252D图的画法

    我们在介绍之前先想想2D图的一些元素 我在这里按我的思路写下一些: 坐标轴(尺度,区间..),线条(样式,颜色...),图和线的标签和注释,图像大小,图像里图片的排版(一张图像中多张图) 下面我们将分 ...