一、super关键字:

在对象的内部使用,可代表父类对象。

1.

访问父类的属性:super.age

2.

访问父类的方法:super.eat()

例:

package 关键字extends;

public class Dog extends Animal{
int age=20;
public void eat(){
System.out.println("狗具有吃东西的能力!");
}
public Dog(){
System.out.println("子类执行了!");
}
public void method(){
System.out.println(super.age);//访问父类的属性
super.eat(); //访问父类的方法
System.out.println(age); //访问父类的属性
eat(); //访问子类方法
}
}

结果:

父类执行了!
子类执行了!
40
动物具有吃东西的能力!
20
狗具有吃东西的能力!

二、

子类的构造过程当中必须调用父类的构造方法

创建子类对象的时候,会自动执行父类构造方法,并创建父类对象。此时就隐式的使用了super关键子。

super关键字显示的写出来:

package 关键字extends;

public class Dog extends Animal{
int age=20;
public Dog(){
super(); //super关键字
System.out.println("子类执行了!");
}
}
主函数中:
Dog dog=new Dog();//创建子类对象
//dog.method();
父类执行了!
子类执行了!

super关键字隐识表达:

public class Dog extends Animal{
int age=20;
public Dog(){
//super(); //这里注释掉super关键字
System.out.println("子类执行了!");
}
}
主函数中:
Dog dog=new Dog();
//dog.method();

结果:

父类执行了!
子类执行了!

三、

如果子类的构造方法当中没有显示调用父类的构造方法,则系统会默认调用

父类无参的构造方法

如果要显示的调用构造方法,则super关键字必须放在子类的构造方法的第一行

四、

如果子类的构造方法中既没有显示的调用父类的构造方法,

而父类又没有无参的构造方法,则编译出错

也就是说父类有有参的构造方法,子类的无参构造函数就会报错!!!

如何修改:

1.使用显示调用父类的构造函数并传入参数值;

    public Dog(){
super(3); //子类显示调用并传入参数
System.out.println("子类执行了!"); }

2.在父类中在添加一个无参的构造方法

    public Animal(){         //无参的构造方法
System.out.println("父类执行了!");
}
public Animal(int age){ //有参的构造方法
this.age=age;
}

五、总结

子类的构造过程当中必须调用父类的构造方法。

如果子类的构造方法中没有显示的调用父类的构造方法,则系统默认调用父类无参的构造方法。

如果显示调用父类的构造方法则必须放在子类构造方法的第一行。

如果子类的构造方法中既没有显示的调用父类的构造方法,而父类中又没有无参的构造方法,则编译出错!!

继承之super关键字的使用的更多相关文章

  1. 面向对象编程(十)——继承之Super关键字及内存分析

    Super关键字

  2. java学习笔记-继承中super关键字

    背景: 在java继承的概念中我们得知,被声明为私有的类成员对所属的类来说仍然是私有的.类之外的任何代码都不能访问,包括子类. super关键字的两种用法: 1.用于调用超类的构造函数: 2.用于访问 ...

  3. Java面向对象-Java类的继承及super关键字

    Java面向对象-Java类的继承 1,继承定义以及基本使用 定义:子类能够继承父类的属性和方法: 注意点:Java中只支持单继承: 私有方法不能继承: 上代码: package com.java12 ...

  4. Java继承:super关键字、构造器、final用法

    一.继承 继承好处 1.提高代码的重用性 2.提高代码的扩展性和维护性 3.为多态打下了基础 继承类型 继承子类创建对象的过程 二.super关键字的使用 理解:super代表父类的引用,用于访问父类 ...

  5. java的继承 和super关键字 构造器

    面向对象的特性二继承: 继承的好处: 1.减少代码的冗余.提高了代码的复用性 2.便于功能的扩展 3.为之后多态的使用,提供了前提 继承的格式: class A extends B{} A:子类.派生 ...

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

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

  7. 继承及super关键字

    继承 继承的本质是对某一批类的抽象,从而实现对世界更好的建模 extend的意思是"扩展",子类是父类的扩展. Java中类只有单继承,没有多继承:儿子只能有一个亲生爸爸,一个爸爸 ...

  8. Java: 类继承中 super关键字

    super 关键字的作用有两个: 1)在子类中调用超类的构造器,完成实例域参数的初始化,调用构造器的语句只能作为另一个构造器(通常指的是子类构造器)的第一条语句出现, 2)在子类中调用超类的方法,如: ...

  9. java-引用数组、继承、super关键字

    1.引用类型数组: 1)   Cell[] cells = new Cell[4];   cells[0] = new Cell(2,5); cells[1] = new Cell(2,6); cel ...

随机推荐

  1. 802.11 af 要点

    (1)TVWS工作在 VHF/UHF 频段,欧洲为 470-790MHZ, 美国为 54-698MHZ. (2)GDB(Geolocation Database):地理位置数据库,与其他802.11协 ...

  2. activiti报错ProcessEngines.getDefaultProcessEngine()为null

    activiti报错ProcessEngines.getDefaultProcessEngine()为null 文件名错误,默认加载classpath下面的activiti.cfg.xml,而不是ac ...

  3. jdbc驱动加载

    使用sqlserver数据库时,加载驱动: Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); Strin ...

  4. matplotlib画堆叠条形图

    import matplotlib.pyplot as plt%matplotlib inlineplt.style.use('ggplot') plt.style.use("ggplot& ...

  5. jquery里面的$.each()方法

    $.each可以迭代jquery对象和数组 $(selector).each()专注于jquery对象的遍历

  6. XPATH语法(二)

    节点(node) 在 XPath 中,有七种类型的节点:元素.属性.文本.命名空间.处理指令.注释以及文档(根)节点.XML 文档是被作为节点树来对待的.树的根被称为文档节点或者根节点. 以下面这xm ...

  7. git填坑笔记

    Counting objects: 3, done.Writing objects: 100% (3/3), 203 bytes | 0 bytes/s, done.Total 3 (delta 0) ...

  8. python 全栈开发,Day33(tcp协议和udp协议,互联网协议与osi模型,socket概念,套接字(socket)初使用)

    先来回顾一下昨天的内容 网络编程开发架构 B/S C/S架构网卡 mac地址网段 ip地址 : 表示了一台电脑在网络中的位置 子网掩码 : ip和子网掩码按位与得到网段 网关ip : 内置在路由器中的 ...

  9. Mac上安装stf

    一,安装 STF的依赖比较多,如下: Node.js >= 0.12ADB properly set upRethinkDB >= 2.2GraphicsMagick (for resiz ...

  10. Asp.Net Core WebAPI入门整理(三)跨域处理

    一.Core  WebAPI中的跨域处理  1.在使用WebAPI项目的时候基本上都会用到跨域处理 2.Core WebAPI的项目中自带了跨域Cors的处理,不需要单独添加程序包 3.使用方法简单 ...