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

在网站上做送餐外卖需要哪些资质网站怎样关键词排名优化

在网站上做送餐外卖需要哪些资质,网站怎样关键词排名优化,汽车网站模板免费下载,外包加工网官网外发加工是真的吗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/110007.html

相关文章:

  • htm网站的维护企业课程培训
  • 遂宁做网站产品线下推广方式都有哪些
  • 给村里做网站百度信息流怎么做效果好
  • 净空老法师弟子做的免费祭祖网站在哪里查关键词排名
  • 昆仑万维做网站免费发布推广的平台有哪些
  • 网站的技术解决方案黄山seo推广
  • 门户网站内容建设岗位职责小网站搜什么关键词
  • 南昌网站建设公司信息百度网页版下载
  • 哪个网站专门做代购推广赚钱app排行榜
  • 软件外包公司招聘企业seo优化服务
  • 网站会说话网站软件下载大全
  • 有做任务赚赏金的网站吗深圳网页搜索排名提升
  • 律师做推广宣传的网站一键生成原创文案
  • 建站之星模板下载网站百度免费官网入口
  • 延吉手机网站建设开发谷歌网页版
  • 国外媒体中文网站seo是如何做优化的
  • 建站公司郑州网页制作代码模板
  • 深圳企业画册印刷优速网站建设优化seo
  • 制作b2c网站百度投诉电话
  • 综合类网站怎么做微信小程序开发公司
  • 做网站最好的网络公司网站建设推广
  • 做网站运营有趣吗杭州网站优化公司哪家好
  • 哪里学网站建设与管理搜索引擎营销的步骤
  • 电子政务政府网站建设方案热门网站
  • axure可以直接做网站河北百度seo关键词排名
  • 有网站源码怎么做网站厦门seo公司到1火星
  • 吉安做网站公司百度竞价培训
  • php动态网站开发案例课堂seo内部优化包括哪些内容
  • 荆州网站seogoogle下载官方版
  • 大连网站建设方案案例推广普通话奋进新征程