继承之super关键字的使用
一、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关键字的使用的更多相关文章
- 面向对象编程(十)——继承之Super关键字及内存分析
Super关键字
- java学习笔记-继承中super关键字
背景: 在java继承的概念中我们得知,被声明为私有的类成员对所属的类来说仍然是私有的.类之外的任何代码都不能访问,包括子类. super关键字的两种用法: 1.用于调用超类的构造函数: 2.用于访问 ...
- Java面向对象-Java类的继承及super关键字
Java面向对象-Java类的继承 1,继承定义以及基本使用 定义:子类能够继承父类的属性和方法: 注意点:Java中只支持单继承: 私有方法不能继承: 上代码: package com.java12 ...
- Java继承:super关键字、构造器、final用法
一.继承 继承好处 1.提高代码的重用性 2.提高代码的扩展性和维护性 3.为多态打下了基础 继承类型 继承子类创建对象的过程 二.super关键字的使用 理解:super代表父类的引用,用于访问父类 ...
- java的继承 和super关键字 构造器
面向对象的特性二继承: 继承的好处: 1.减少代码的冗余.提高了代码的复用性 2.便于功能的扩展 3.为之后多态的使用,提供了前提 继承的格式: class A extends B{} A:子类.派生 ...
- Java面向对象----继承概念,super关键字
继承概念: 继承需要符合的关系 is-a , 父类通用更抽象,子类更特殊更具体 类之间的关系 继承体现 组合体现 实现接口体现 继承的意义 代码重用 体现不同抽象层次 extends关键字 Sup ...
- 继承及super关键字
继承 继承的本质是对某一批类的抽象,从而实现对世界更好的建模 extend的意思是"扩展",子类是父类的扩展. Java中类只有单继承,没有多继承:儿子只能有一个亲生爸爸,一个爸爸 ...
- Java: 类继承中 super关键字
super 关键字的作用有两个: 1)在子类中调用超类的构造器,完成实例域参数的初始化,调用构造器的语句只能作为另一个构造器(通常指的是子类构造器)的第一条语句出现, 2)在子类中调用超类的方法,如: ...
- java-引用数组、继承、super关键字
1.引用类型数组: 1) Cell[] cells = new Cell[4]; cells[0] = new Cell(2,5); cells[1] = new Cell(2,6); cel ...
随机推荐
- Centos6.5使用ELK(Elasticsearch + Logstash + Kibana) 搭建日志集中分析平台实践
Centos6.5安装Logstash ELK stack 日志管理系统 概述: 日志主要包括系统日志.应用程序日志和安全日志.系统运维和开发人员可以通过日志了解服务器软硬件信息.检查配置过程中的 ...
- [学习笔记]JS 数组Array push相关问题
前言: 今天用写了一个二维数组,都赋值为零,然后更新其中一个值,结果和预期是不一样,会整列的相同位置都是同一个值. 1.用Chrome的控制台样例如下: arrs[2][2] =1的赋值,竟然是三个数 ...
- PCA和SVD最佳理解
奇异值分解(SVD)原理与在降维中的应用 https://www.cnblogs.com/pinard/p/6251584.html 最通俗易懂的PCA主成分分析推导 https://blog.csd ...
- PYTHON-函数的定义与调用,返回值,和参数
函数基础'''1. 什么是函数 具备某一功能的工具->函数 事先准备工具的过程--->函数的定义 遇到应用场景,拿来就用---->函数的调用 函数分类两大类: 1. 内置函数 2. ...
- oracle:储存过程实现分页
CREATE OR REPLACE PACKAGE PKG_QUERY IS -- Author : ADMINISTRATOR -- Created : 2016/12/8 星期四 10:28:37 ...
- webpack——publicPath路径问题
output: { filename: "[name].js", path:path.resolve(__dirname,"build") } 如果没有指定pu ...
- php正则表达式验证(邮件地址、Url地址、电话号码、邮政编码)
1.电子邮件地址的校验 <?php /* 校验邮件地址*/ function checkMail($email) { //用户名,由“w”格式字符.“-”或“.”组成 $email_name= ...
- python 全栈开发,Day132(玩具管理页面,控制玩具通讯录,基于请求的好友关系建立)
先下载github代码,下面的操作,都是基于这个版本来的! https://github.com/987334176/Intelligent_toy/archive/v1.5.zip 注意:由于涉及到 ...
- python 全栈开发,Day53(jQuery的介绍,jQuery的选择器,jQuery动画效果)
js总结 js: 1.ECMAScript5 ES5语法 2.DOM CRUD 获取 3种方式 id tag className //面向对象 对象 : 属性和方法 某个对象中 function $( ...
- 步步为营-12-Dictionary-翻译
说明:https://pan.baidu.com/s/1nvPqhDJ所需文件在此目录下对应的位置 1 先做一个简单的英汉翻译词典.先搭UI页面 2 将百度网盘中提供的资料放置到bin\debug目录 ...