首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

从Java继承类的重名static函数浅谈解析调用与分派

; //输出结果为 static in testClass1 16 tc2.SMethod(); //输出结果为 static in testClass2 17 } 18 } 从结果中可以看到...,当我们用父类的实例引用(实际上该实例是一个子类)调用static函数时,调用的是父类的static函数。...当一个方法被调用时,JVM首先检查其是不是类方法。如果是,则直接从调用该方法引用变量所属类中找到该方法并执行,而不再确定它是否被重写(覆盖)。...由于static方法是一种编译期可知,运行期不可变的方法,所以尽管子类和父类都有同样的方法名,而事实上它们是不同的方法,也是完全可以区分的方法。...在调用static方法时,编译器就会直接在类加载时把其符号引用解析为直接引用,不存在说子类找不到方法之后再去父类找这种行为,所以也叫解析调用。

1.2K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    穿越Java世界的继承奇旅:从基类到子类的华丽蜕变

    这些框架和库通过继承机制,允许开发者定义自己的类来扩展或定制现有功能。 ④表达类之间的“是一种”关系:继承可以用来表达类之间的“是一种”(is-a)关系。...二:什么是继承以及继承的方式 继承是面向对象编程(OOP)中的一个核心概念,它提供了一种机制,允许我们基于已有的类来创建新的类,新创建的类被称为子类(或派生类),而原有的类被称为父类(或基类、超类)。...Dog和Cat都继承了Animal类,其中:Animal类称为父类/基类或超类,Dog和Cat可以称为Animal的 子类/派生类,继承之后,子类可以复用父类中成员,子类在实现时只需关心自己新增加的成员即可...从继承概念中可以看出继承最大的作用就是:实现代码复用,还有就是来实现多态。 继承又分单继承、多层继承、不同类继承同一个类。...,需要借助super关键字 // super是获取到子类对象中从基类继承下来的部分 super.a = 200; super.b = 201; // 父类和子类中构成重载的方法,直接可以通过参数列表区分清访问父类还是子类方法

    8810

    《Java从入门到失业》第五章:继承与多态(5.8-5.10):多态与Object类

    这里需要注意一个问题,就是构造方法是不能被重写的,因为构造方法不能被继承。另外子类的方法不能低于超类方法的可见性。       ...假如新加了别的枪,只需要编写新的枪类继承Gun类,重写shoot方法,然后调用Player类的changeGun方法即可。新增枪完全不需要修改Player类的代码。       ...当时我们提到过,如果用final修饰类类型的属性时,必须保证该类也是final的。 当我们用final来修饰一个类的时候,那么这个类就不能被继承了,不过该类是可以继承其他类的。...} 5.10Object类 前面介绍继承层次的时候,提到过顶级超类java.lang.Object。...如果某个类没有显示的使用extends关键字,则该类是继承自Object。事实上,在Java中,除了基本数据类型不是对象,其他都是对象,包括数组。因此数组也是继承自Ojbect类的。

    46640

    CSS知识总结(上)

    :first-child 选中同级别中的第一个标签 :last-child 选中同级别中的最后一个标签 :nth-child(n) 选中同级别中的第n个标签 :nth-last-child(n) 选中同级别中的倒数第...选中同级别中同类型的倒数第n个标签 :only-of-type 选中父元素中唯一类型的某个标签 属性选择器 input[type=password]{} 根据指定的属性名称找到对应的标签, 然后设置属性...作用: 给父元素设置一些属性, 子元素也可以使用, 这个我们就称之为继承性 注意点: 并不是所有的属性都可以继承, 只有以color/font-/text-/line-开头的属性才可以继承 在CSS的继承中不仅仅是儿子可以继承..., 只要是后代都可以继承 继承性中的特殊性 a标签的文字颜色和下划线是不能继承的 h标签的文字大小是不能继承的 案例 div{ color: red...容器级的标签中可以嵌套其它所有的标签 文本级的标签中只能嵌套文字/图片/超链接 容器级的标签 div h ul ol dl li dt dd ...

    1K40

    【笔记】《C++Primer》—— 第18章:用于大型程序的工具

    所有能出现在全局作用域的声明都能出现在命名空间中,联想标准库命名空间std即可 命名空间的特点是命名空间可以嵌套定义,使用方法和嵌套类差不多,但是注意命名空间不能放在函数或类的内部 命名空间可以分布式定义...C++支持多重继承(很多其他语言不支持这一特性),方法就是继承列表多些几个基类,因此我们可以从多个直接基类产生派生类,这个派生类会继承所有父类的属性 多重继承通常概念上就是某个类有多个平级或者难以定级的属性...要注意的是基类的构造顺序是与派生列表中基类的出现顺序一致,与派生类参数顺序无关 C11中允许派生类从多个基类中继承构造函数,但是如果多个构造函数都相同的话将产生错误,此时派生类应该自己定义一个构造函数来覆盖它们...,虚基类是从最底层的派生类开始初始化的,也就是由最先一个虚派生汇合处的类开始初始化,此时即使这个类不是虚基类的直接派生也可以初始化虚基类的实例 而且编译器是先按顺序初始化所有的虚基类,然后再按顺序初始化非虚基类...,初始化的时候按照从底往上,同级的时候从列表左往右的顺序初始化,可以用下面例子加深理解 ?

    1K20

    前端学习笔记之CSS选择器

    #1、作用:根据指定的类名称,在当前界面中找到对应的标签,然后设置属性 #2、格式: .类名称 { 属性:值; } #3、注意点: 1、类名就是专门用来给某个特定的标签设置样式的 2、每个标签都可以设置一个或多个...#2、格式: 标签名称 { 属性:值; } #3、注意点: 1、只要是HTML的标签都能当做标签选择器 2、标签选择器选中的是当前界面中的所有标签,而不能单独选中某一标签 3、标签选择器,无论嵌套多少层都能选中...标签名称2"的元素 #3、注意: 1、子元素选择器之间需要用>符号链接,并且不能有空格 比如div >p会找div标签的所有后代标签,标签名为">p" 2、子元素选择器只会查找儿子,不会查找其他嵌套的标签...#1、定义:给某一个元素设置一些属性,该元素的后代也可以使用,这个我们就称之为继承性 #2、注意: 1、只有以color、font-、text-、line-开头的属性才可以继承 2、...a标签的文字颜色和下划线是不能继承别人的 3、h标签的文字大小是不能继承别人的,会变大,但是会在原来字体大小的基础上变大 ps:打开浏览器审查元素可以看到一些inherited

    2K30

    Tensorflow入门教程(四十二)——ANU-Net

    1、ANU-Net网络优点 一般医学影像分割研究分为两类:(1)、人工和半自动分割,(2)、全自动分割。...(4)、ANUNet重新设计了嵌套的UNet结构,集成了不同级别的特征,与其他基于UNet的模型相比,在各种医学图像分割任务上都带来了更高的性能。...每个嵌套卷积模块通过几个卷积层来提取语义信息,每个卷积层是通过密跳跃连接来连接的,拼接层可以融合不同级别的语义信息。...(3)、嵌套结构中,不同级别的特征通过不同的独立的解码器来恢复,因此可以从不同级别获得分层的解码模板。 2.2、注意力机制 在嵌套Unet结构中增加注意力门控,结构如下图所示。 ?...2.5、损失函数 由于嵌套卷积块之间设计了密集的跳过连接,因此ANUNet从块中获取了不同语义级别的全分辨率特征图。

    1.2K10

    java编程思想第九章接口

    9.4多重继承   接口与接口之间是可以通过多重继承来提升接口的功能的。 9.5通过继承来扩展接口   在使用继承扩展接口时,请避免将不同接口中的名字定义为一样的。这样会导致编译异常。...9.8嵌套接口   在实现接口时,并不需要实现嵌套在其内部的任何接口 9.9接口与工厂   通过工厂模式来创建接口的实现对象。   提供一些复用的机制。...除此之外,在项目中间接口的使用还是相对较少的。   还是需要累积更多经验,要多思考啊!...2)抽象类不能够用来创建对象。   3)如果一个类继承抽象类,则必须实现父类的抽象方法;否则的话,子类也必须定义为abstract类。...d)一个类只能继承一个抽象类,而一个类可以实现多个接口。 2)设计层面来说:   抽象类是对事物的一种抽象,即对类的抽象。接口是一种行为的抽象。   继承抽象类,对子类来说,是一种“是不是”的关系。

    23920

    浅谈逻辑选择器 -- 父选择器它来了!

    :is 和 :where 的区别 首先,从语法上,:is 和 :where 是一模一样的。它们的核心区别点在于 优先级。...组合、嵌套 CSS 选择器的一个非常大的特点就在于组合嵌套。...实际使用的时候,需要注意这一层继承的问题! :not 的优先级问题 下面是一些使用 :not 需要注意的问题。 :not、:is、:where 这几个伪类不像其它伪类,它不会增加选择器的优先级。...:not() 不能嵌套 :not() 禁止套娃。:not 伪类不允许嵌套,这意味着 :not(:not(...)) 是无效的。...结果如下: 这里体现的是嵌套结构,精确寻找对应的父元素。 :has() 父选择器 -- 同级结构的兄元素选择 还有一种情况,在之前也比较难处理,同级结构的兄元素选择。

    1.6K50

    Go基础系列:struct和嵌套struct

    Go中不支持面向对象,面向对象中描述事物的类的重担由struct来挑。比如面向对象中的继承,可以使用组合(composite)来实现:struct中嵌套一个(或多个)类型。...显然,struct的嵌套类似于面向对象的继承。...只不过继承的关系模式是"子类 is a 父类",例如"轿车是一种汽车",而嵌套struct的关系模式是外部struct has a 内部struct,正如上面示例中outer拥有inner。...而且,从上面的示例中可以看出,Go是支持"多重继承"的。 嵌套struct的名称冲突问题 假如外部struct中的字段名和内部struct的字段名相同,会如何?...按照规则(2),A和B在C中是同级别的嵌套结构,所以A.b和B.b是冲突的,将会报错,因为当调用c.b的时候不知道调用的是c.A.b还是c.B.b。

    4.3K20

    【笔记】《C++Primer》—— 第四部分:高级主题(完)

    ,多重继承也只能继承已经定义过的类,不能是final的,而且一个基类在列表中只能出现一次 构造多重继承的对象和构造单继承的对象类似,自己决定好参数要传递到哪里。...,因此最好我们调用基类函数时也要特指 可以将某个类在继承的时候声明为虚基类,方法是在继承的派生列表中对应项前面加上virtual,这样处理后无论这个目标类被间接继承多少次,这个基类成员都只会出现一次,此时的派生称为虚派生...编译器是先按顺序初始化所有的虚基类,然后再按顺序初始化非虚基类,初始化的时候按照从底往上,同级的时候从列表左往右的顺序初始化 19 特殊工具与技术 准确来说实际上我们并不能重载new和delete...*fun)(10); 成员指针的一大用处是存放为函数表 嵌套类的特点是其名字在外层类之外就不可见了,需要用作用域符来访问 嵌套类和外层类之间没有权限特权,完全可以当作一个独立的类使用 在嵌套类的外层类完成真正的定义之前...局部类是定义在函数内部的类,局部类的定义只在定义它的作用域中可见 局部类的特点是其所有成员都必须在类内完成定义 同样局部类和函数之间没有权限特权 局部类内的嵌套类本质也属于一个局部类,所以嵌套类自身的成员必须定义在嵌套类内部

    91310

    Effective-java-读书笔记之类和接口

    (或接口)只是在某一个类的内部被用到, 就应该考虑使它成为那个类的私有嵌套类.对于成员(域, 方法, 嵌套类和嵌套接口), 有四种可能的访问级别(可访问性递增):私有的(private).包级私有的(package-private...protected方法, 也可以是protected的域, 后者比较少见.例子: java.util.AbstractList中的removeRange方法....(从Java 8开始接口也可以包含默认方法了.)抽象类需要继承(Java只允许单继承), 但是可以实现多个接口.使用接口的好处:现有的类可以很容易被更新, 以实现新的接口.接口是定义混合类型(mixin...然后, 该抽象类的所有实现都将提供这个新的方法.接口一旦被公开发行, 并且已被广泛实现, 再想改变这个接口几乎是不可能的.第21条 为了后代设计接口从Java 8开始, 可以给接口加上方法, 而不破坏现有的实现...嵌套类存在的目的应该只是为它的外围类提供服务.嵌套类有四种:静态成员类(static member class).非静态成员类(nonstatic member class).匿名类(anonymous

    71671

    Kotlin中级(9)- - - Kotlin类之数据类、密封类、内部类.md

    当然说到内部类,就必须提到另一个概念,嵌套类,所谓嵌套类:即指一个类可以嵌套在其他类中。...().嵌套类方法/属性 } 注意 调用嵌套类的属性或者方法格式为: 外部类.嵌套类().嵌套类方法/属性。...从声明类上看,继承的两个类单独声明,子类通过(子类:父类)继承父类,而内部类必须声明在外部类里面,并且用关键字inner标记 从访问上看,继承的父类不能直接访问子类,外部类可以通过“外部类().内部类...()”访问内部类,继承的子类能直接访问父类公开的成员属性及方法,而内部类值能通过this@外部类的方式访问外部类的属性和方法 从能否覆盖上看,继承的子类能覆盖父类用open标记的属性和方法,内部类不能覆盖外部类的属性和方法...从定义对象的方法看,继承的子类定义为val/var son = Son(),内部类的定义为 val/var inter = Outer().Inter()

    1.2K20

    我可能学到了“假”的CSS:伪类伪元素

    CSS的选择器除了根据id、class、属性等从DOM中获取元素的以外,还有很重要的一类,用来获取元素的特别内容或特别状态,这就是 伪元素(Pseudo-elements) 和 伪类(Pseudo-classes...相比于其他伪元素大都是对文档中已有部分的选择,::before 和 ::after 则是向文档树中加入内容,这些内容并不存在于HTML源代码中,但确是可见的,并且可以当作元素的子对象对待(正常的样式继承等...,索引是相对于所有同级兄弟元素计算的,而非特定类型== :first-child 和 :last-child Hi Apple ...:nth-last-child() 和 :nth-child() 规则相同,唯一的区别在于从最后一个元素反向计算 :only-child 匹配相对于其父元素类型唯一的子元素 :empty 匹配空的元素...(),:nth-last-of-type() 基本用法和 *-child 一样 和 *-child 不同的是, 索引只针对选择器指定的类型,而非同级的所有兄弟元素 [2.5] 表单元素 :enabled

    1.5K10

    Java 接口的演变史

    当相同的方法签名出现在超类和它正在实现的接口中时,则该方法是从超类继承的,而不是从接口继承的。 Java 1.1 引入了内部类的概念,其中类可以是类的成员。...从 Java 2 开始,我们有了静态嵌套类和接口,这些也可以在接口内部使用。...因此,从 Java 5 开始,我们可以在接口中有六种类型的成员,使用静态常量、抽象方法、嵌套类、嵌套接口、嵌套枚举和嵌套注释。...因此,从 Java 8 开始,接口的成员可以是静态常量、抽象方法、默认方法、静态方法、嵌套类、嵌套接口、嵌套枚举和嵌套注解: // generic interface with one type parameter...从 Java 9 开始,接口中支持的成员是静态常量、抽象方法、默认方法、静态方法、私有方法、嵌套类、嵌套接口、嵌套枚举和嵌套注解: // generic interface with one type

    74230

    HTMLCSS 第四章

    style="color:green; font-size:20px;"> 三种样式表总结 样式表 优点 缺点 使用情况 控制范围 行内式样式表 书写方便,权重高 没有实现样式和结构相分离 较少...复合选择器 交集选择器 既又原则 例如:p.box {} 既是p标签 又有box类名 并集选择器 将多个选择器合并在一起 例如: div,p,h1 {} 后代选择器 空格前面的元素和后面的元素必须是嵌套关系...后代元素会继承祖先元素的一些样式 跟文字相关属性可以继承 color font- line- text- 可以继承 块元素可以继承父级元素的宽度,高度不继承 注意:a链接颜色不予继承,需要单独写 注意...类选择器 继承或者* 的贡献值 0,0,0,0 每个元素(标签)贡献值为 0,0,0,1 每个类,伪类贡献值为 0,0,1,0 每个ID贡献值为 0,1,0,0 每个行内样式贡献值 1,0,0,0 每个!

    1.2K20
    领券