首页 > 其他分享 >18-面向对象-super关键字

18-面向对象-super关键字

时间:2023-08-18 11:22:55浏览次数:33  
标签:访问 18 void 面向对象 父类 super public 属性

super关键字

super代表父类的引用,用于访问父类的属性、方法、构造器

基本语法

1) 访问父类的属性,但不能访问父类的private属性

super.属性名

2) 访问父类的方法,但不能访问父类的private方法

super方法名

3) 访问父类的构造器,注意只能放在构造器的第一句

super(参数列表)

public class Super01 {
    public static void main(String[] args) {
        B b = new B();
        b.hi();
        b.ok();
    }
}

class A{
    public int n1 = 100;
    protected int n2 = 200;
    int n3 = 300;
    private int n4 = 400;

    public A() {
        System.out.println("父类A的构造方法");
    }

    public void test100(){
        System.out.println("欢迎来到父类A的test100方法");
    }

    protected void test200(){}

    void test300(){}

    private void test400(){}
}

class B extends A{

    //访问父类的构造器,super(参数列表),注意只能放在构造器的第一句
    public B(){
        super();
        System.out.println("子类B的构造方法");
    }

    //访问父类的属性,但不能访问父类的private属性
    public void hi(){
        System.out.println("n1 = " + super.n1 + "\tn2 = " + super.n2 + "\tn3 = " + super.n3);
        //System.out.println("n4 = " + super.n4); 错误,n4可以在com.hspedu.super_.A中访问private
    }
    //访问父类的方法,但不能访问父类的private方法
    public void ok(){
        super.test100();
        //super.test400(); 错误,test400()可以在com.hspedu.super_.A中访问private
    }
}

super带来的好处 / 细节

1) 调用父类的构造器时,分工明确,父类属性由父类初始化,子类属性由子类初始化

2) 当子类中有和父类的属性和方法重名时,为了访问父类的属性和方法,必须要通过super关键字,如果没有重名,则使用super、this访问的效果时一样的。

public class Super02 {
    public static void main(String[] args) {
        Graduate graduate = new Graduate();
        graduate.hi();
        graduate.ok();
    }
}

class Student{
    public String name;

    public void show(){
        System.out.println("欢迎来到父类Student的show方法");
    }
}

class Graduate extends Student{
    public int age;
//当子类中有和父类的属性和方法重名时,为了访问父类的属性和方法,必须要通过super关键字 //如果没有重名,则使用super、this访问的效果时一样的 public void hi(){ System.out.println("直接调用父类的属性:name = " + name); System.out.println("使用this调用父类的属性:name = " + this.name); System.out.println("使用super调用父类的属性:name = " + super.name); } public void ok(){ show(); this.show(); super.show(); } }

这里需要注意:在类中调用show方法时,一般顺序是:

a) 先找本类中是否有show方法,如果有则调用

b) 如果没有,则在父类中查找是否有show方法(如果有,则进行调用)

c) 如果父类没有,则继续查找父类的父类,是否有show方法,以此类推直到Object类

提示:

如果在查找方法的过程中,找到了,但是不能访问,则报错

如果在查找方法的过程中,没有找到,则提示方法不存在

 

标签:访问,18,void,面向对象,父类,super,public,属性
From: https://www.cnblogs.com/REN-Murphy/p/17639933.html

相关文章

  • 8-18|如何查看本地端口
    要查看本地计算机上的端口状态,可以使用多种方法,具体取决于你使用的操作系统。以下是一些常用操作系统中查看本地端口的方法:1.**Windows**:  -使用`netstat`命令:   ```   netstat-an   ```   如果你想要看到正在监听的端口和关联的进程,可以......
  • 2023/08/18
    采样率:采样率是指在连续时间信号中,每秒对信号进行采样(取样)的次数。在数字信号处理中,采样率是一个非常重要的参数,它决定了从连续信号中获取离散样本的频率,从而将连续信号转换为离散信号。采样率通常用赫兹(Hz)来表示,表示每秒采样的次数。例如,如果信号的采样率为1000Hz,则意味着......
  • CF1845E
    原题翻译首先我们容易发现如果给每个球一个编号,他的相对位置是不变的于是我们不妨把原问题转化为一个常为\(k\)严格递增的序列\(b_i\)表示这\(k\)的球的位置我们发现如果递推操作次数显然不记录序列的状态的话是比较难办的。于是我们考虑正难则反,考虑对于一个序列\(c_i\),判断......
  • 面向对象的三大特性
    面向对象的三大特性(2007-05-2123:58:41)转载▼   1.封装:面向对象编程核心思想这一就是就是将数据和对数据的操作 封装在一起. 通过抽象,即从具体的实例中抽取共同的性质形成一般的概念,比如类的概念.   2.继承:继承体现了一种先进的编程模式.子......
  • P9518 queue 题解
    题目传送门思路一道稍稍有点复杂的模拟好题。本题的关键性就在于需要实现的leave函数必须支持任意位置的删除,任意元素的查询,这对于queue或是deque是十分不利的。故本题使用另外一种STL:list实现。但是,list的查询其实也是比较耗费时间的,那么我们可以使用\(Map\)来......
  • AT_abc182_e [ABC182E] Akari题解
    题目链接思路说实话,这道题其实算模拟,还是挺简单的那种。我们可以定一个int类型的二维数组,表示网格。通过不同的数字来表示该方格内不同的类型。然后,使用枚举法模拟网格内灯泡从上、下、左、右四个方向模拟光线的运动过程,在过程中增加可被照射到的格子数量,最后输出即可。坑点......
  • SP1837 PIE - Pie 题解
    题目链接思路一道简单二分答案题。对于每个确定的派的体积,设置左边界\(l\)、右边界\(r\)和尝试值\(mid\),用\(\operatorname{check}\)函数返回在每份有\(mid\)那么多派的情况下,可以分成几份。将这些结果加起来,与应分人数进行比较,如果份数小于人数,证明每一份分的太多了,将......
  • super vlan与sub vlan
    需求分析1、创建vlanbatch1020501002、supervlan为vlan100    subvlan为vlan10203、vlan50为普通vlan4、网段分配   vlan10网路地址10.1.1.10-19    vlan20网络地址10.1.1.20-29    vlan50网络地址:50.1.1.1-255    vlan100为supe......
  • 论文解读(UDALM)《UDALM: Unsupervised Domain Adaptation through Language Modeling
    Note:[wechat:Y466551|可加勿骚扰,付费咨询]论文信息论文标题:UDALM:UnsupervisedDomainAdaptationthroughLanguageModeling 论文作者:ConstantinosKarouzos,GeorgiosParaskevopoulos,AlexandrosPotamianos论文来源:2021aRxiv论文地址:download论文代码:download视屏......
  • 《Lua程序设计第四版》 第三部分18~21章自做练习题答案
    Lua程序设计第四版第三部分编程实操自做练习题答案,带⭐为重点。18.1编写一个迭代器,与数值型for等价,能否以无状态迭代器实现?functionfromto(n,m)returnfunction(m,c)ifc<mthenreturnc+1endreturnnilend,m,n......