面向对象_04【关键字:super使用】
super关键字:解决当子类重写父类对象方法后,子类对象无法访问父类的成员
1,调用父类成员变量和方法
super.成员变量
super.成员方法([参数1,参数2.......])
Example:
//super关键字调用父类成员变量及成员方法
package new_Object;
class Animal_03{
String name="动物";
//定义父类shout方法
public void shout(){
System.out.println("super父类方法");
}
}
class Dog_03 extends Animal_03{
public void shout(){
String name ="犬类";
super.shout();//访问父类成员方法
}
//访问父类成员变量
void printf(){
System.out.println("name="+super.name);
}
}
public class Example03_Extends_super {
public static void main(String[] args) {
Dog_03 p1=new Dog_03();
p1.shout();//调用重写的shut方法
p1.printf();
}
}

2,super调用父类的构造方法
super([参数1,参数2.......])
Example
//super关键字访问父类构造方法
package new_Object;
class Animal_04{
//定义Animal_04类有参构造方法
public Animal_04(String name){
System.out.println("这是一匹"+name);
}
}
//继承类
class Horse_04 extends Animal_04{
public Horse_04(){
super("马");//调用父类的构造方法
}
}
public class Example04_Extends_super {
public static void main(String[] args) {
Horse_04 p=new Horse_04();
}
}

====================================================================================================================================
补充
====================================================================================================================================
在子父类中成员变量、成员函数、构造函数的特点之体现
1,成员变变量
=>当本类中的成员和局部变量同名用this区分
=>当子父类中的成员变量同名用super区分父类
this和super很相似
* =>this:代表一个本类对象的引用
* =>super:代表一个父类空间
//1,成员变量
package new_Object;
class Fu{
int num=6;//定义父类成员变量
}
//子类继承父类
class Zi extends Fu{
int num=8;//定义子类的成员变量
void show(){
//super访问父类成员的变量
System.out.println(super.num+"......"+super.num);
//this调用本类、super调用父类
System.out.println(this.num+"......"+super.num);
}
}
public class Extends_02 {
public static void main(String[] args) {
Zi z=new Zi();
z.show();
}
}
run:6.....6
8.....6
2,成员函数
=>当子父类中出现成员函数一模一样的情况下,会执行子类函数。
* 这现象称覆盖操作,这是函数在子父类中的特性。
* =>函数两特性:
* 1,重载。同一个类中
* 2,覆盖(重写)。子类中。
* 覆盖注意事项:
* 1,子类方法覆盖父类方法时,子类权限>=父类权限
* 2,静态只能被静态覆盖,或者被静态覆盖.
//2,成员函数
package new_Object;
class Fu_1{
void show(){
System.out.println("fu show run");
}
}
class Zi_1 extends Fu_1{
void show(){
super.show();//访问父类show
}
}
public class Extends_03 {
public static void main(String[] args) {
Zi_1 z=new Zi_1();
z.show();
}
}
run:fu show run
2.1 什么时候使用覆盖?
=>当一个类进行子类的扩展时,子类需要保留父类功能声明,但要定义子类中该功能的特有内容时。
//覆盖的应用
package new_Object;
//定义一个手机只有显示功能
class Phone{
void show(){
System.out.println("number");
}
}
//新手机继承旧手机的显示功能时又添加新的功能 name pic
class NewPhone extends Phone {
void show(){
System.out.println("name");
System.out.println("pic");
/*System.out.println("number");*/super.show();
}
}
public class Extends_031 {
public static void main(String[] args) {
NewPhone p=new NewPhone();
p.show();
}
}

3,构造函数
* =>在子类构造对象时,访问父类的构造函数时,父类构造函数也执行?
* >在子类的构造函数的第一行有一个默认的隐式语句:super();
* =>子类实例化过程:子类中所有的构造函数都会默认访问父类中的空参数的构造函数
* =>为什么子类实例化的时候要访问父类中的构造函数?
* >子类继承了父类,获取到父类中的内容(属性),所以在使用父类内容之前,先看父类如何自己初始化。所以在子类构造对象时,必须先访问父类中的构造函数。
* =>如果父类中没有定义空参数构造函数,那么子类的构造函数必须用super明确要调用父类中哪一个构造函数。同时子类构造函数中如果使用this调用本类构造函数时,那么super就不存在,super和this都是定义在第一行。但是可以保证的是子类中肯定会有其他构造函数访问父类的构造函数。
* =>注意:super语句必须定义在子类的构造函数第一行。因为父类的初始化动作先完成。
//3,构造函数
package new_Object;
/*class Fu_04{
//无参
Fu_04(){
System.out.println("Fu构造函数run");
}
}
class Zi_04 extends Fu_04{
Zi_04(){
//super();=>相当于this();调用的是父类中的空参数构造函数
System.out.println("Zi构造函数run");
}
}
/*run:Fu构造函数run
Zi构造函数run
*/
class Fu_04{
//有参
Fu_04(int x){
System.out.println("Fu构造函数run");
}
}
class Zi_04 extends Fu_04{
Zi_04(){
super(1);//调用父类int型构造参数
System.out.println("Zi构造函数run");
}
}
public class Extends_04 {
public static void main(String[] args) {
new Zi_04();
}
}

Example:
package new_Object;
class Fu_05{
Fu_05(){
super();//隐式语句
show();
return;
}
void show(){
System.out.println("fu show");
}
}
class Zi_05 extends Fu_05{
int num=8;
Zi_05(){
super();
/*通过super初始化父类时,子类成员变量未显示初始化变量,super()父类初始化完成后
子类才进行成员变量初始化
*/
return;
}
void show(){
System.out.println("zi show..."+num);
}
}
public class Extends_05 {
public static void main(String[] args) {
Zi_05 z=new Zi_05();
z.show();
}
}

面向对象_04【关键字:super使用】的更多相关文章
- Java面向对象之关键字super 入门实例
一.基础概念 (一)super关键字 super关键字的用法和this相似.this代表的是当前对象.super代表的是父类中内存空间. 子父类中是不会出现同名属性的情况. (二)继承中.成员变量问题 ...
- Java面向对象----继承概念,super关键字
继承概念: 继承需要符合的关系 is-a , 父类通用更抽象,子类更特殊更具体 类之间的关系 继承体现 组合体现 实现接口体现 继承的意义 代码重用 体现不同抽象层次 extends关键字 Sup ...
- JAVASE(九)面向对象特性之 : 继承性、方法重写、关键字super、
个人博客网:https://wushaopei.github.io/ (你想要这里多有) 1.继承性 1.1 为什么要类的继承性?(继承性的好处) ①减少了代码的冗余,提高了代码的复用性:②更好 ...
- JAVA面向对象-----final关键字
JAVA面向对象-–final关键字 1:定义静态方法求圆的面积 2:定义静态方法求圆的周长 3:发现方法中有重复的代码,就是PI,圆周率. 1:如果需要提高计算精度,就需要修改每个方法中圆周率. 4 ...
- 10 面向对象(package关键字的概述及作用)
10.01_面向对象(package关键字的概述及作用) A:为什么要有包 *开发时有很多类,如果放在一个文件夹中不方便管理,而且容易重复 将字节码(.class)进行分类存放 包其实就是文件夹 B: ...
- 面向对象-static关键字实战案例
面向对象-static关键字实战案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.static关键字概述 1>.static的功能 static关键字用于修饰成员变量和 ...
- Java基础语法(11)-面向对象之关键字
title: Java基础语法(11)-面向对象之关键字 blog: CSDN data: Java学习路线及视频 1.this this是什么 它在方法内部使用,即这个方法所属对象的引用: clas ...
- Java中的两个关键字——super、this
Java中的两个关键字——super.this 神话丿小王子的博客主页 一.super super 是java中方的一个关键字,用它可以引用父类中的成员: super可用于访问父类中定义的属性 sup ...
- Java开发笔记(四十九)关键字super的用法
前面介绍了如何从Bird类继承而来Swallow类,按道理子类应当继承父类的所有要素,但是对于构造方法来说,Swallow类仅仅继承了Bird类的默认构造方法,并未自动继承带参数的构造方法.如果子类想 ...
- Java 继承extends、关键字super和this、多态、动态绑定
Manager 经理 extends Employee 雇员 "is-a"(是)关系是继承的一个明显特征.每个经理都是一名雇员. 从术语的角度讲,Manager是子类,Emplo ...
随机推荐
- Zabbix实战-简易教程--告警屏蔽(Maintenances)
Zabbix Maintenance 一.Zabbix Maintenance(zabbix告警屏蔽) 很多时候,我们需要在某段时间更新维护线上环境,这个时候你是已知触发器会引发报警,所以此时你可以提 ...
- 2017 Multi-University Training Contest - Team 1 1006&&HDU 6038 Function【DFS+数论】
Function Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total ...
- [51nod1597]有限背包计数问题
你有一个大小为n的背包,你有n种物品,第i种物品的大小为i,且有i个,求装满这个背包的方案数有多少 两种方案不同当且仅当存在至少一个数i满足第i种物品使用的数量不同 Input 第一行一个正整数n 1 ...
- Gym100971B Gym100971C Gym100971F Gym100971G Gym100971K Gym100971L(都是好写的题。。。) IX Samara Regional Intercollegiate Programming Contest Russia, Samara, March 13, 2016
昨天训练打的Gym,今天写题解. Gym100971B 这个题就是输出的时候有点小问题,其他的都很简单. 总之,emnnn,简单题. 代码: #include<iostream> #inc ...
- hdu_1012(水题。。。不能再水)
#include<cstdio> #include<cstring> #include<algorithm> #include<cmath> using ...
- HDU 1068 Girls and Boys(模板——二分图最大匹配)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1068 Problem Description the second year of the univ ...
- memcached集群和一致性哈希算法
场景 由于memcached集群各节点之间都是独立的,互不通信,集群的负载均衡是基于客户端来实现的,因此需要客户端用户设计实现负载均衡算法. 取模算法 N个节点,从0->N-1编号,key对N ...
- base64是啥原理
Base64是一种基于64个可打印字符来表示二进制数据的表示方法.由于2的6次方等于64,所以每6个比特为一个单元,对应某个可打印字符.三个字节有24个比特,对应于4个Base64单元,即3个字节可表 ...
- 【开发技术】 java和JSP和JavaScript有什么区别
JSP全称是:java server page,意思是基于JAVA服务器的网页技术,跟asp,php一样,都是网页制作用的语言 JavaScript:也成为JS,跟JAVA没啥关系,就是赶时髦起个这名 ...
- angular4 中自定义pagination组件
你用Angular 吗? 一.介绍 一个基于angular4 开发的可以分页的组件.组件的好处就是可以复用,复用.....作为一个前端码农,开始的分页功能实现是我用jquery写的,其他同事用的时候都 ...