随笔 - 402  文章 - 1 评论 - 20 阅读 - 113万
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

1)继承并不只是扩展父类的功能,还可以重写父类的成员方法。重写(还可以称为覆盖)就是在子类中将父类的成员方法的名称保留,重写成员方法的实现内容,更改成员方法的存储权限,或是修改成员方法的返回值类型。当重写父类方法时,修改方法的修饰权限只能从小的范围到大的范围改变。

2)在继承中还有一种特殊的重写方式,子类和父类的成员方法返回值、方法名称、参数类型及个数完全相同,唯一不同的是方法实现内容,这种特殊重写方式被称为重构

复制代码
package ten;

class Test {
    public Test(){//构造方法
    }
    protected void doSomething(){//成员方法
    }
    protected Test doIt(){//访问返回值类型为Test类型
        return new Test();
    }
}
class Test2 extends Test{  //如果在class之前加上public,就会报错.因为public类的类名必须和文件名相同,并且最多只能有一个public类super();//调用父类的构造方法
    super();    
  super.doSomething();//调用父类成员方法
} public void doSomethingnew(){//新增方法 } public void doSomething(){//重写父类方法 } protected Test2 doIt(){ //重写父类方法,方法返回值类型为Test2类型 return new Test2(); } }
复制代码

3)super的使用

  (1)super出现在继承父类的子类中;

  (2)在静态方法中不能使用super关键字;

  (3)子类没有权限调用父类中被修饰为private的方法,只可以调用父类中修饰为public或protected的成员方法等;

  (4)可以在子类中使用super关键字调用父类的成员方法,也可以在子类的构造方法中使用super()语句调用父类的构造方法,父类无参构造方法将被自动调用,但有参构造方法并不能被自动调用,只能依赖于super关键字显式地调用父类的构造方法;

  (5)super使用方式:    

        第一种:super.xxx;  (xxx为变量名或对象名),这种方法意义为,获取父类中的名字为xxx的变量或方法引用。使用这种方法可以直接访问父类中的变量或对象,进行修改赋值等操作。

        第二种:super.xxx();  (xxx为方法名),这种方法意义为,直接访问并调用父类中的方法。

        第三种:super();  这种方法意义为,调用父类的初始化方法,其实就是调用父类中的public xxx()方法。

posted on   chamie  阅读(281)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示