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. ES 01 - Elasticsearch入门 + 基础概念学习

    目录 1 Elasticsearch概述 1.1 Elasticsearch是什么 1.2 Elasticsearch的优点 1.3 Elasticsearch的相关产品 1.4 Elasticsea ...

  2. 手把手教您将 libreoffice 移植到函数计算平台

    LibreOffice 是由文档基金会开发的自由及开放源代码的办公室套件.LibreOffice 套件包含文字处理器.电子表格.演示文稿程序.矢量图形编辑器和图表工具.数据库管理程序及创建和编辑数学公 ...

  3. 深度学习入门实战(一):像Prisma一样算法生成梵高风格画像

    本文由云+社区发表 作者:董超 导语:现在人工智能是个大热点,而人工智能离不开机器学习,机器学习中深度学习又是比较热门的方向,本系列文章就从实战出发,介绍下如何使用MXnet进行深度学习~ 既然是实战 ...

  4. .NET Core下的Spring Cloud——前言和概述

    前言 前几年一直在写类似dubbo,Srping Cloud的微服务框架辗辗转转重复了多次,也重构推翻了很多次,其中诞生了"Rabbit.Rpc","Go",& ...

  5. MySQL数据库性能优化(享学课堂听课笔记)

    1.场景: 2张表A表 200W条数据,关联表B表3W条数据,AB有主外键关系. 案例1. 35S 使用关联子查询,查询时间35S 案例2. 19S 使用连表查询 (Left  join ,Inner ...

  6. 记Android开发中的一些另类使用

    1.使用recyclerview,直接添加下列依赖就可以使用recyclerview,版本号与appcompat-v7版本号相同 compile 'com.android.support:design ...

  7. java日期 Calendar类的使用

    举例: import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; public clas ...

  8. 开源介绍·新款简约、实用与大气的Hexo新主题:BMW

    这是一个简约.大气.实用的Hexo新主题:BMW

  9. 4 Redis 配置文件介绍

    2016-12-22 14:28:39 该系列文章链接NoSQL 数据库简介Redis的安装及及一些杂项基础知识Redis 的常用五大数据类型(key,string,hash,list,set,zse ...

  10. vue关闭代码检查eslint

    confing/index.js 文件里面的 useEslint 改成false就可以关闭代码检查了   不过为了代码的规范性,不建议关闭!