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

为什么我新创建的方法没有出现在另一个引用了该方法所属类的类中?

这个问题涉及到面向对象编程中的类和对象的概念,以及方法的可见性和访问权限控制。

当你在一个类中创建一个新的方法,如果该方法没有出现在另一个引用了该方法所属类的类中,可能有以下几个原因:

  1. 可见性限制:方法的可见性可能被设置为私有(private),这意味着该方法只能在所属类的内部访问,其他类无法直接调用。如果你希望其他类也能够调用该方法,可以将可见性设置为公有(public)或者受保护(protected)。
  2. 引用的类没有重新编译:如果你在一个类中创建了新的方法,但是另一个引用了该方法所属类的类没有重新编译,那么新方法就不会在该类中出现。在这种情况下,你需要确保所有引用了该类的类都重新编译,以便更新类的定义。
  3. 继承关系:如果两个类之间存在继承关系,新创建的方法可能只出现在父类中,而没有出现在子类中。这是因为子类继承了父类的方法,但是无法直接访问父类中私有的方法。如果你希望子类也能够调用新创建的方法,可以将方法的可见性设置为公有或者受保护。

总结起来,当你创建一个新的方法时,需要确保方法的可见性符合你的需求,并且所有引用了该方法所属类的类都重新编译,以便更新类的定义。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

如果没有无参构造方法(也即父只给了带参构造方法),子类构造方法怎么办?

如果没有无参构造方法(也即父只给了带参构造方法),子类构造方法怎么办? /* 父如果没有无参构造方法(也即父只给了带参构造方法),子类构造方法怎么办?   ...法1:子类构造方法通过 super(...); 去显示调用父带参构造方法。   ...法2:子类构造方法通过 this();/this(...); 调用本类其他构造方法,但是子类其他构造方法中一定会有一个去访问了父带参构造方法。   法3:让父提供无参构造。...;/super(...); 这三个语句访问子类或父构造方法时候,必须放在第一句语句上。         否则,就可能会对父数据进行多次初始化。 */ 示例代码如下图所示: ?

1.5K10

创建子类对象时,父构造函数调用被子类重写方法为什么调用是子类方法

A对象时候父会调用子类方法?...但是:创建B对象父会调用父方法? 答案: 当子类被加载到内存方法区后,会继续加载父到内存。...如果,子类重写了父方法,子类方法引用会指向子类方法,否则子类方法引用会指向父方法引用。 如果子类重载了父方法,则子类重载方法引用还指向子类方法。...如果子类方法没有重写也没有重载父方法,则方法引用会指向父方法。 当子类对象创建时,会先行调用父构造方法(构造方法也是方法),虚拟机会在子类方法区寻找方法并运行。...其结果是当编译时候,父构造方法调用方法参数已经强制转换为符合父方法参数了。 上边代码在编译前已经转换为下面这个样子了。

6.1K10

为什么Java成员变量不能被重写?成员变量在Java能够被重写么?不会重写成员变量,而是隐藏成员变量访问隐藏域方法

Paste_Image.png 按照我们已有的多态概念,第二个应该是输出sub才对,但却输出了super。这是为什么呢?...意思就是: 在一个,子类成员变量如果和父成员变量同名,那么即使他们类型不一样,只要名字一样。父成员变量都会被隐藏。在子类,父成员变量不能被简单用引用来访问。...而是,必须从父引用获得父被隐藏成员变量,一般来说,我们不推荐隐藏成员变量,因为这样会使代码变得难以阅读。...其实,简单来说,就是子类不会去重写覆盖父成员变量,所以成员变量访问不能像方法一样使用多态去访问。...访问隐藏域方法 就是使用父引用类型,那么就可以访问到隐藏域,就像我们例子代码 就是使用类型转换System.out.println(((Super)c1).s); 翻译自http://www.programcreek.com

3.5K40

Javathis关键字底层原理

简单的如何使用,这里就跳过了,本文主要是分析原理,这里需要有点点jvm知识,不过也会介绍。  下面进入正题:当我们在方法内部使用this调用属性、方法时候,你有没有考过this是怎么来?...其中7-13行是构造方法代码区域;第17-19行描述是Java源码定义局部变量与方法被执行时栈帧局部变量表变量对应关系。...2. this引用变量数据类型是this所在方法所属。即编码时,this出现在哪个,this数据类型就是这个(回头看看17-19行,默认无参构造方法这个唯一局部变量就是this!...static情况:为什么静态就不能使用this呢,其实这是跟加载机制有关,我们知道静态方法是可以直接通过名直接调用,根本没有实例化一个对象,因为无论静态方法和静态代码块在对象实例化之前加载时候就已经执行了...所以,我们仍然可以按照第一条表述来理解,即,构造方法是由新创建对象来调用,构造方法this,仍然指代是正在调用构造方法对象。

51130

第1章-Activity生命周期和启动模式(上)

因为Activity启动需要任务栈,而用Standard模式去启动Activity,默认会进入启动它Activity所属任务栈,而非Activity类型Context并没有所谓任务栈....ABC—启动C->ABC SingleTop 栈顶复用模式,如果新Activity已位于栈顶,那么不会重新创建Activity,而是回调onNewIntent方法 onNewIntent-->onResume...ABC—启动C→ ABC SingleTask 栈内复用模式,只要占存在都不会重新创建,并且也是回调onNewIntent 另外需要注意是,模式拥有clearTop 效果,会把位于它顶上Activity...Activity不会出现在历史Activity列表,相当于android:exludeFromRecents="true" 任务栈 TaskAffinity(任务相关性),标识了一个Activity...预告下一篇应该是 IntentFilter匹配规则,为什么不放一起呢? 一来是字数太多,二来是还没打完... EJ系列坑还没填完,又开了一个坑... 都想打死自己 关注,看我把坑填完!

41740

小米二面 • 送分题 • 讲讲你对反射理解

抛砖玉:为什么要使用反射 前文我们说过,接口使用提高了代码可维护性和可扩展性,并且降低了代码耦合度。...需要注意是,newInstance方法调用默认构造函数(无参构造函数)初始化新创建对象。如果这个没有默认构造函数, 就会抛出一个异常。...,所以才和反射机制有关) 为什么说动态代理使用了反射机制,下篇文章会给出详细解释。...那么反射中这个 “反” 我们就可以理解为根据对象找到对象所属(对象出处) 通过反射,也就是调用了 getClass() 方法后,我们就获得了这个对应 Class 对象,看到了这个结构,...输出了对象所属完整名称,即找到了对象出处。

57720

this关键字与super关键字详解

,因为输出语句中name变量在eat方法这片空间也存在,如果存在它就只会在eat方法这片空间去找,如果这片空间没有它才会去到堆内存中去找 3.定义: (1)this关键字代表了所属函数调用者对象,this...关键字要注意事项: (1)存在同名成员变量与局部变量时,在方法内部访问是局部变量(Java采取是“就近原则”机制访问); (2)如果在一个方法访问了一个变量,变量只存在成员变量情况下...(1) 如果在子类构造方法没有指定调用父构造方法,那么java编译器会在子类构造方法内加上super()语句。...(2) super关键字调用父构造函数时,语句必须要是子类构造函数第一个语句。 (3) super与this关键字不能同时出现在同一个构造函数调用其他构造函数。...3. super关键字调用父构造方法要注意事项: 注意:是两个关键字不能同时出现在同一个构造函数中去调用其他构造函数,里面还是可以写this.num = num。

68510

读懂框架设计灵魂 — Java 反射机制

抛砖玉:为什么要使用反射 前文我们说过,接口使用提高了代码可维护性和可扩展性,并且降低了代码耦合度。...在程序运行期间,JVM 始终为所有的对象维护一个被称为「运行时类型标识」,这个信息跟踪着每个对象所属完整结构信息,包括包名、名、实现接口、拥有的方法和字段等。...对象所属完整名称,即找到了对象出处。...需要注意是,「newInstance方法调用默认构造函数(无参构造函数)初始化新创建对象。如果这个没有默认构造函数, 就会抛出一个异常」。 ?...,所以才和反射机制有关) ❝为什么说动态代理使用了反射机制,下篇文章会给出详细解释。

77790

一文读懂字符串String

为什么说字符串是不可变 在工作,我们经常要在代码对字符串进行赋值和改变它值,但是,为什么我们说字符串是不可变呢?...final修饰,表明value⽤是不会被改变,⽽value只会在String构造函数中被初始化,⽽且 并没有其他⽅法可以修改value数组值,保证了value⽤和值都不会发⽣变化。...而且,String所有方法没有改变字符串本身值,都是返回了一个新对象。..."abc"这个字符串对象⽤, 如果没有,则先在堆创建⼀个"abc"字符串对象,并将⽤添加到字符串常量池,随后将⽤赋给str3。...它可以将一个数组部分或全部元素复制到另一个数组

49620

.NETORM框架设计(利用抽象、多态实现无反射绿色环保ORM框架)

在后面的文章将陆续写下在建设基础框架一些实践检验,里面可能包括对UI层封装、基础控件封装等等。就废话少扯了,进入主题。 这篇文章重点是无反射ORM框架,为什么会有这样想法?...为什么要说“思维实现约束”,这也是我们程序员一些通病之一吧,都喜欢用复杂技术。不管三七二十一用了心里舒服。这是好事,为了练习技术可以理解。没有这份好奇心这份激情我们也很难走到专家位置。...目的之四:设置实体属性值 通过实例化泛型对象,然后反射对象属性通过SetValue方法设置属性值。 简结:这几点是最常用,可能还包括其他复杂功能,这里就不涉及了。...在ORM我们泛型方法都是约束实体为BaseEntityObject类型,然后所有的信息包括主键、字段、数据类型都能够通过多态方式获取到。...当然篇文章只是简单讲解了一下核心内容,也算是抛砖玉吧。希望对大家来说有点启发作用。[王清培版权所有,转载请给出署名]

73620

js常见错误总结

初始化作用域链 形参赋值 变量提升 首先会在当前上下文中,创建一个对象(这个对象就是当前实例) – 浏览器默认多做事情 让当前上下文中this指向新创建对象 – 浏览器默认多做事情 代码执行...:_proto_(原型链),属性值是当前实例(对象)所属prototype原型 原型链查找机制 首先找自己私有属性,私有属性有,调取就是私有属性 如果没有,默认基于__proto__原型链属性,...找所属prototype原型上公共属性和方法 如果还没有,则基于原型prototype__proto__继续向上找,一直找到Object.prototype为止 寄生组合式继承 call继承 +...) instanceof 当前原型只要出现在了实例原型链上就返回true 本身不能完成数据类型检测,只是利用它特征(检测某个实例是否属于这个)来完成数据检测 constructor 本身不能完成数据类型检测...toString是返回当前实例所属信息(检测数据类型),其余都是转换字符串 对象.toString,toString方法this是对象实例,也就是检测他数据类型,也就是this是谁,就是检测谁数据类型

1.8K40

设计模式 之 模板模式

run()方法实现应该出现在抽象,不应该在实现上,抽象是所有子类共性封装。...图改动似乎很小,在抽象HummerModel增加了一个实现方法isAlarm,确定各个型号悍马是否需要声音,由各个实现覆写方法,同时其他基本方法由于不需要对外提 供访问,因此也设计为protected...在我们抽象isAlarm返回值就是影响了模板方法执行结 果,方法就叫做钩子方法(Hook Method)。...回答是能,但强烈地、极度地不建议这么做,那怎么做呢? 把子类传递到父有参构造,然后调用。 使用反射方式调用,你使用了反射还有谁不能调用?! 父调用子类静态方法。...这三种都是父直接调用子类方法,好用不?好用!解决问题了吗?解决了!项目中 允许使用不?不允许!就一直没有搞懂为什么要用父调用子类方法。如果一定要调用子类,那为什么要继承它呢?搞不懂。

37630

第 18 章 用于大型程序工具

在写本篇博客时,尝试使用了 PC版讯飞输入法,直接可以将大段文字通过语音方式码进来,写作效率唰唰提高。另外,有些书中代码也比较长,敲起来也比较费时费力。... catch可能是同一个函数局部 catch,也可能位于直接或间接用了发生异常函数另一个函数。控制权从一处转移到另一处,这有两个重要含义: 沿着调用链函数可能会提早退出。...因为 f接受一个类型实参,而且 f在 C所属命名空间进行了隐式声明,所以 f能被找到。相反,因为 f2没有形参,所以它无法被找到。...// 错误: A::f2没有被声明 } 与实参相关查找,会在每个实参(以及实参所属命名空间中搜寻候选函数。...一个 using声明将重载声明语句所属作用域中已有的其他同名函数。如果 using声明出现在局部作用域中,则引入名字将隐藏外层作用域相关声明。

89420
领券