关于继承

方法可覆盖,变量不可覆盖,引用是父类,实例是子类,那么变量用父类的,方法用子类的

以上输出:

5

son

 

若方法调用了变量,那么调用的是方法所在类中的变量

以上输出:

5

9

以上输出:

5

5

 

继承是面向对象编程中的重要概念,以下是关于继承的一些正确说法: 在一个子被创建的时候,首先会在内存中创建一个父对象,然后在父对象外部放上子独有的属性,两者合起来形成一个子的对象。子对象拥有父对象中所有的属性和方法,但是父对象中的私有属性和方法,子是无法访问到的,只是拥有,但不能使用。所以子对象是绝对大于父对象的,所谓的子对象只能继承非私有的属性及方法的说法是错误的,可以继承,只是无法访问到而已[^1]。 在C++中,除了public成员、protect成员、private成员之外还有“不可访问成员”。public继承后,基中的私有成员在派生中成为了“不可访问成员”,这是一个和私有成员不同的概念[^3]。 以下为Java继承示例代码: ```java class Parent { Parent() { System.out.println("调用父构造方法!"); } private static void staticParent() { System.out.println("调用父静态方法"); } private final void finalParent() { System.out.println("调用父final方法"); } private void printParent() { System.out.println("调用父私有方法"); } } class Child extends Parent { public void printChild() { System.out.println("调用子公有方法"); } } public class Test { public static void main(String[] args) throws Exception { // 获取子 Class clazz = Class.forName("work.litao.Child"); // 得到父 Class superClass = clazz.getSuperclass(); // 得到父继承的所有方法 java.lang.reflect.Method[] methods = superClass.getDeclaredMethods(); // 设置私有方法可以被访问 java.lang.reflect.AccessibleObject.setAccessible(methods, true); for (java.lang.reflect.Method m : methods) { System.out.println(); System.out.println("子调用方法" + m.getName() + "()的调用结果: "); m.invoke(new Child()); } } } ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值