当前位置: 首页 > wzjs >正文

1688app官方下载seo做关键词怎么收费的

1688app官方下载,seo做关键词怎么收费的,p2p网贷网站建设,长沙网站设计哪家好Java的继承机制是面向对象编程的核心特性之一,但许多开发者对“子类究竟能继承父类哪些内容”存在误解。例如,为什么子类不能继承父类的构造方法?为什么私有成员变量可以继承却无法直接访问?本文将通过继承规则解析和内存模型拆解…

Java的继承机制是面向对象编程的核心特性之一,但许多开发者对“子类究竟能继承父类哪些内容”存在误解。例如,为什么子类不能继承父类的构造方法?为什么私有成员变量可以继承却无法直接访问?本文将通过继承规则解析内存模型拆解,为你揭示Java继承的本质逻辑。


一、继承规则全景解析

1. 构造方法:禁止继承的设计
  • 规则
    无论父类的构造方法是publicprotected还是private,​子类均不能继承父类的构造方法

  • 代码验证

class Parent {public Parent() {}private Parent(int x) {} 
}class Child extends Parent {// 必须显式定义构造方法public Child() {super(); // 必须主动调用父类构造方法}
}

编译报错:若父类没有无参构造方法且子类未显式调用super(...),将直接导致编译失败。

2. 成员变量:隐式继承但访问受限
  • 规则
    父类的所有成员变量(包括private修饰的)​都会被继承,但访问权限由修饰符控制:

    • public/protected/默认:子类可直接访问
    • private:子类无法直接访问(需通过父类提供的公共方法)
  • 反编译验证
    使用javap -private Child查看子类字节码,会发现父类私有变量privateVar存在于子类的字段列表中,但访问时报错"has private access"

3. 成员方法:继承与权限挂钩
  • 规则

    • public/protected/默认方法:子类可直接继承并重写(Override
    • private方法:​无法被继承,子类中定义同名方法视为新方法(与重写无关)
  • 示例

class Parent {private void privateMethod() {} public void publicMethod() {}
}class Child extends Parent {// 此方法与父类privateMethod无关联public void privateMethod() {} 
}

 二、内存模型深度拆解 

1.为什么构造方法无法被继承

原因很简单因为子类如果继承了父类的构造方法,就会违背构造方法的定义规则,如图.

2.关于成员变量的继承

如图当代码执行到z.name这一行的时候,它会先寻找堆上001空间里的子类成成员变量,没有就会寻找001空间中的父类成员变量,图上Fu类里的成员变量是私有的所以无法访问,同理如果不是私有的就能够访问

3.关于成员方法的继承

非私有方法的继承机制

虚方法表(vtable)​
JVM为每个类维护一个虚方法表,记录该类所有可被继承的方法(非private、非static)。

  • 子类虚方法表中包含:
    • 从父类继承的非私有方法(直接复制父类方法地址)
    • 子类新增的方法
    • 子类重写(Override)的方法(覆盖父类方法地址)

动态绑定示例

class Parent {public void show() { System.out.println("Parent"); }
}
class Child extends Parent {@Overridepublic void show() { System.out.println("Child"); }
}Parent obj = new Child();
obj.show(); // 输出"Child"(动态绑定到子类方法)
私有方法的隔离性

编译期静态绑定
private方法在编译期直接绑定到定义它的类,​不会进入虚方法表

  • 子类对象内存中虽然包含父类私有方法(物理存在),但子类方法表中无入口,因此无法调用。
  • 子类定义同名方法视为全新方法,与父类无关。
class Parent {private void secret() { System.out.println("Parent secret"); }
}
class Child extends Parent {// 这是一个新方法,与父类secret()无关public void secret() { System.out.println("Child secret"); }
}

总结 

Java的继承机制通过内存预分配权限分层控制,实现了代码复用与安全性的平衡。理解其背后的内存模型,能帮助我们:

  1. 避免因权限问题导致的诡异Bug(如误认为子类不包含父类私有变量)
  2. 优化代码结构(例如合理选择protectedfinal修饰符)
  3. 深入掌握多态的实现原理(虚方法表与动态绑定)

下次面对继承问题时,不妨从内存布局的视角重新审视,或许会有豁然开朗的体验!

http://www.dtcms.com/wzjs/443022.html

相关文章:

  • 百度推广进入后是别的网站 说是服务器问题爱站工具包的模块
  • 网站建设公司哪家强中级经济师考试
  • 营销型外贸网站定制seo推广外包
  • 企业运营方案seo网站内容优化
  • cpancel面板搭建WordPress郑州seo外包顾问热狗
  • 织梦网站本地测试网络营销是什么课程
  • 上杭网站建设app推广平台
  • 网页设计与制作第六版seo网络优化是做什么的
  • 网站建设qqb站视频推广网站400
  • 成都代做网站百度应用市场官网
  • win 2012网站建设上海最近3天疫情情况
  • 会议网站怎么做app投放推广
  • 网站建设 手机和pc站长工具百度
  • 济南网站建设qiangbi站长工具备案查询
  • 网站建设初期视频号直播推广二维码
  • c2c网站内容及功能开始重庆网站推广联系方式
  • 西安seo网站关键词下载地图导航手机版免流量费用
  • 做网站项目前怎么收集需求搜索引擎优化的对比
  • 博物馆网站微信公众号建设360搜索推广
  • 南京定制网站建设恩城seo的网站
  • 西咸新区建设环保网站搜索引擎营销实训报告
  • 怎么看网站源码用什么做的啦啦啦资源视频在线观看8
  • 网站建设的宣传词乐云seo
  • 手机新闻网站模板最佳磁力吧ciliba搜索引擎
  • 北京网站改版大数据精准营销的策略
  • 做书架的网站百度搜索风云榜单
  • 做网站怎样写标题产品市场调研怎么做
  • 网站建设方案书 广东青岛网站设计公司哪家好
  • 青岛网站搭建网络服务提供者收集和使用个人信息应当符合的条件有
  • 网站建设保密协议淘宝推广方法有哪些