super可以理解为是指向自己超(父)类对象的一个指针,而这个超类指的是离自己最近的一个父类。

    String name;
int age; void value(){
name = "张三";
age = 20;
}
} class UserAction extends BaseAction{ } class Main extends UserAction{ String name;
int age; public static void main(String[] args){
Main m = new Main();
m.value();
} void value(){
super.value();
name = super.name;
age = super.age; System.out.println(name);
System.out.println(age);
} }

运行结果:

张三
20

    String name;
int age; void value(){
name = "张三";
age = 20;
}
} class UserAction extends BaseAction{
String name;
int age; void value(){
name = "李四";
age = 21;
}
} class Main extends UserAction{ String name;
int age; public static void main(String[] args){
Main m = new Main();
m.value();
} void value(){
super.value();
name = super.name;
age = super.age; System.out.println(name);
System.out.println(age);
} }

运行结果:

李四
21


String name;
int age; void value(){
name = "张三";
age = 20;
}
} class UserAction extends BaseAction{
String name; void value(){
name = "李四";
}
} class Main extends UserAction{ String name;
int age; public static void main(String[] args){
Main m = new Main();
m.value();
} void value(){
super.value();
name = super.name;
age = super.age; System.out.println(name);
System.out.println(age);
} }

运行结果:

李四
0

总结:super.value()指向的是父类,但是父类中并不存在age,所以这时候age的值是默认值0。


String name;
int age; void value(){
name = "张三";
age = 20;
}
} class UserAction extends BaseAction{
String name; void value(){
super.value();
name = "李四";
}
} class Main extends UserAction{ String name;
int age; public static void main(String[] args){
Main m = new Main();
m.value();
} void value(){
super.value();
name = super.name;
age = super.age; System.out.println(name);
System.out.println(age);
} }

运行结果:

李四
20

总结:super.value()指向的是父类,但是父类中并不存在age,所以在父类中执行super.value(),让父类去调用自身父类的方法,这时候age才被赋值。因为在Main类中的value()方法中执行的super指向的是UserAction。


String name;
int age; void value(){
name = "张三";
age = 20;
}
} class UserAction extends BaseAction{
String name;
int age; void value(){
name = "李四";
age = 21;
}
} class Main extends UserAction{ String name;
int age; public static void main(String[] args){
Main m = new Main();
m.value();
} void value(){
name = super.name;
age = super.age; System.out.println(name);
System.out.println(age);
} }

运行结果:

null
0

总结:既调用父类的value()方法又调用父类的变量。如果只调用类型的变量,不调用父类的value()方法,name的值就是默认值null,age的值就是默认值0。

关键字-super的更多相关文章

  1. Java中的两个关键字——super、this

    Java中的两个关键字——super.this 神话丿小王子的博客主页 一.super super 是java中方的一个关键字,用它可以引用父类中的成员: super可用于访问父类中定义的属性 sup ...

  2. Java开发笔记(四十九)关键字super的用法

    前面介绍了如何从Bird类继承而来Swallow类,按道理子类应当继承父类的所有要素,但是对于构造方法来说,Swallow类仅仅继承了Bird类的默认构造方法,并未自动继承带参数的构造方法.如果子类想 ...

  3. Java 继承extends、关键字super和this、多态、动态绑定

    Manager 经理  extends Employee 雇员 "is-a"(是)关系是继承的一个明显特征.每个经理都是一名雇员. 从术语的角度讲,Manager是子类,Emplo ...

  4. Java类的设计----关键字super

    关键字super 在Java类中使用super来引用父类的成分 super可用于访问父类中定义的属性 super可用于调用父类中定义的成员方法 super可用于在子类构造方法中调用父类的构造方法 su ...

  5. Java面向对象之关键字super 入门实例

    一.基础概念 (一)super关键字 super关键字的用法和this相似.this代表的是当前对象.super代表的是父类中内存空间. 子父类中是不会出现同名属性的情况. (二)继承中.成员变量问题 ...

  6. java中关键字super

    super关键字的作用 java中的super关键字是一个引用变量,用于引用父类对象.关键字“super”以继承的概念出现在类中. 主要用于以下情况:1.调用父类的方法   2.调用父类的变量  3. ...

  7. JAVASE(九)面向对象特性之 : 继承性、方法重写、关键字super、

    个人博客网:https://wushaopei.github.io/    (你想要这里多有) 1.继承性 1.1 为什么要类的继承性?(继承性的好处) ①减少了代码的冗余,提高了代码的复用性:②更好 ...

  8. Java关键字——super

    使用super关键字可以从子类中调用父类中的构造方法.普通方法和属性 与this调用构造方法的要求一样,语句必须放在子类构造方法的首行 this和super都可以调用构造方法,但是两者不能同时出现,调 ...

  9. OC基础--self关键字&super关键字

    PS:OC中的self关键字可以与C#中的this关键字区分记忆,虽然区别还是很大的. OC中的super关键字指的是父类指针 一.self关键字必须了解的知识: 1.使用场合:只能用在方法中(对象方 ...

  10. Java中关键字super与this的区别

    一.super关键字 在JAVA类中使用super来引用父类的成分,用this来引用当前对象,如果一个类从另外一个类继承,我们new这个子类的实例对象的时候,这个子类对象里面会有一个父类对象.怎么去引 ...

随机推荐

  1. Android事件机制之二:onTouch详解

    <Android事件机制之一:事件传递和消费>一文总结了Android中的事件传递和消费机制. 在其中对OntachEvent中的总结中,不是很具体.本文将主要对onTach进行总结. o ...

  2. 深入浅出解读 Java 虚拟机的差别测试技术

    本文分享基于字节码种子生成有效.可执行的字节码文件变种,并用于 JVM 实现的差别测试.本文特别提出用于修改字节码语法的classfuzz技术和修改字节码语义的classming技术.上述变种技术系统 ...

  3. springmvc 项目完整示例01 需求与数据库表设计 简单的springmvc应用实例 web项目

    一个简单的用户登录系统 用户有账号密码,登录ip,登录时间 打开登录页面,输入用户名密码 登录日志,可以记录登陆的时间,登陆的ip 成功登陆了的话,就更新用户的最后登入时间和ip,同时记录一条登录记录 ...

  4. Shiro源码分析之SecurityManager对象获取

    目录 SecurityManager获取过程 1.SecurityManager接口介绍 2.SecurityManager实例化时序图 3.源码分析 4.总结 @   上篇文章Shiro源码分析之获 ...

  5. 前端异步技术之Promise

    前言 从事前端的朋友或多或少的接触过Promise,当代码中回调函数层级过多你就会发现Promise异步编程的魅力,相信此文一定能帮你排忧解惑! Promise概念 Promise是JS异步编程中的重 ...

  6. 好用的Chrome插件推荐

    无扩展,不 Chrome :几款 Chrome 扩展程序推荐 相信很多人都在使用 Chrome 浏览器,其流畅的浏览体验得到了不少用户的偏爱,但流畅只是一方面, Chrome 最大的优势还是其支持众多 ...

  7. Mac终端工具item2实现覆盖在屏幕上透明效果

    1.去官网安装item2: https://www.iterm2.com/downloads.html 2.打开preferences 3.到keys配置: 4.点击上图展示的Create a Ded ...

  8. C# 判断用户是否对路径拥有访问权限

    如何获取当前系统用户对文件/文件夹的操作权限? 1.获取安全信息DirectorySecurity DirectorySecurity fileAcl = Directory.GetAccessCon ...

  9. [android] 相对布局和单位简介

    /**********************2016年4月23日 更新*******************************/ 知乎:为何Android的默认布局是RelativeLayou ...

  10. windows10 php7安装mongodb 扩展

    系统环境:win10家庭版Phpstudy2016  php7 1. 打开phpinfo 查看 nts(非线程) 还是 ts (线程),然后查看操作位数 注: 86 等于 32 位 ,和你的windo ...