0 0

为什么可以这样调用方法3

//代码1:包A中有一个动物类
package testa;
public class Animal {
protected void crowl(String c){
System.out.println(c);
}
}
//代码2:包B中有一个类鼠类
package testb;
import testa.Animal;
class Rat extends Animal{
public void crowl(){
                crowl("zhi zhi"); //为什么可以这样调用方法        }
}

问题补充:
redstarofsleep 写道
public void crowl()
protected void crowl(String c)
这两个是不同的方法,因为方法参数不同。子类继承了父类,所以子类有protected void crowl(String c)方法。但是子类的public void crowl()方法不会覆盖从父类继承来的方法,因为这两个方法参数不同,是两个不同的方法
所以你在子类中调用crowl("zhi zhi"); 其实就是相当于调用了父类的这个方法,等同于
this.crowl("zhi zhi"); 也等同于super.crowl("zhi zhi");



调用父类的方法怎么可以用this.crowl("zhi zhi");

问题补充:
AngelAndAngel 写道
为什么可以this这样调用了:是因为它继承了父类的方法,等于是自己也有了这样的方法,所以this可以调用。


为什么这this或者super可以省略啊
OO 
2011年8月25日 08:56

7个答案 按时间排序 按投票排序

0 0

采纳的答案

引用
为什么这this或者super可以省略啊

this可以省略是 因为你就是在本类里面调用的啊 本类的对象就是this
而super可以省略 是因为继承了父类的方法,现在变成自己的了,所以就可以直接调用。

2011年8月25日 13:27
0 0

为什么可以this这样调用了:是因为它继承了父类的方法,等于是自己也有了这样的方法,所以this可以调用。

2011年8月25日 13:18
0 0

public void crowl()
protected void crowl(String c)
这两个是不同的方法,因为方法参数不同。子类继承了父类,所以子类有protected void crowl(String c)方法。但是子类的public void crowl()方法不会覆盖从父类继承来的方法,因为这两个方法参数不同,是两个不同的方法
所以你在子类中调用crowl("zhi zhi"); 其实就是相当于调用了父类的这个方法,等同于
this.crowl("zhi zhi"); 也等同于super.crowl("zhi zhi");

2011年8月25日 10:03
0 0

1、protected修饰的成员只允许子类与包访问!只不过子类可访问是指继承访问,即在子类的实例中直接访问继承过来的protected成员,而不是在子类中通过创建父类实例的方式来访问;
2、而包访问就是指通过“XXX x = new XXX(); x.YYY;”的方式来访问,即通过实例的引用来访问,能不能访问就是看访问的代码所在的类是否与类XXX 在同一包中。
但包访问要注意一点的是:如果XXX中只是继承了父类中的protected成员,而没有重写(方法)或重新定义(属性)这些成员,则能不能访问就要看当前访问的代码所在的类是否与类XXX的父类在同一包;另外如果类XXX重写与重新定义过这些protected成员,则就直接看访问代码所在的类与类XXX是否在同一包即可。

2011年8月25日 09:14
0 0

但是假如说你在子类
Animal a=new Animal();
a.crowl("zhi zhi")这样就不行了 因为protected是受包内保护的,你调用是不行的,但是可以继承。

2011年8月25日 09:04
0 0

Rat 继承了Animal 的crowl方法啊,当然可以调用。

如果Animal 的crowl方法是private的就不行了,对子类不可见

只要是protected,public都对子类可见

你用了两个不同的package,如果不写访问控制符是不能访问的,如果在同一个package里,那也是可以的

2011年8月25日 09:00
0 0

因为Rat 这个类继承了Animal 这个类,所以也继承了它的方法,因此Rat也会有crowl这个方法。

2011年8月25日 08:59

相关推荐

    WebSerices异步调用方法总结

    WebServices 异步调用方法总结 WebService 异步调用是指在客户端和服务器端之间进行异步数据交换的过程。异步调用可以提高系统的性能和可扩展性,实现高效的数据交换。下面是 WebService 异步调用的实现方法总结: ...

    基于JavaParser的代码调用链分析,可以用于分析Java代码的方法调用链.zip

    3. **构建调用图**:根据找到的方法调用信息,可以构建一个调用图,其中每个节点代表一个方法,边表示方法间的调用关系。 4. **分析调用链**:在调用图的基础上,可以分析最长路径、最短路径、循环调用等,从而揭示...

    Struts2动态方法调用

    Struts2作为一款流行的Java Web框架,其动态方法调用(Dynamic Method Invocation,DMI)功能为开发者提供了极大的灵活性。在传统的MVC模式中,控制器(Controller)通常通过硬编码的方式处理请求,而动态方法调用则...

    dwr 各种调用方法

    例如,`<create>`标签创建一个名为`testClass`的JavaScript对象,它对应于`/com.dwr.TestClass`这个Java类,而`<include>`标签则指定了`testMethod1`方法可以被调用。 JavaScript调用这部分非常直接,只需引入由...

    C#动态调用类方法

    1.动态调用类方法,模拟VB中的CallByName 2.附带了C#和VB的代码 3.主要是一个项目中用到了要调用很多参数和返回值相同的一系列函数,所以 想到了这个方法,不用重复的写方法名,使用循环调用

    JS调用C#后台方法

    `[WebMethod]`是必须的特性,表示该方法可以被Web服务调用。 2. **JavaScript调用Web服务**: - 使用XMLHttpRequest对象或者更现代的fetch API发起异步HTTP请求。对于老版本的浏览器,可以使用jQuery的$.ajax方法...

    易语言取类方法(调用未公开方法)

    在易语言中,通常的方法调用都是公开的,即可以直接通过对象或类名来调用。但有些方法可能因为设计需要被设置为私有或受保护,这些方法不对外部代码开放,被称为未公开方法。调用未公开方法通常需要特殊手段,如反射...

    Java程序设计基础:调用方法-方法的嵌套调用.pptx

    在定义方法时,一个方法内不能再定义另一个方法,即不能嵌套定义,但是在调用一个方法的过程中,还可以调用另一个方法,这是方法的嵌套调用。 方法的嵌套调用 假设main方法中调用a方法,a 方法中调用b方法,具体流程...

    远程方法调用(客户端调用服务端的方法)源码

    这样,客户端就可以找到并调用这个远程对象。 6. **序列化(Serialization)**:由于RMI涉及到跨JVM的通信,所以远程对象需要实现`Serializable`接口,以便其状态可以被序列化和反序列化,以便在网络上传输。 7. *...

    java方法调用

    通过调用方法,我们可以执行预先定义好的一组指令,这有助于提高代码的复用性和可维护性。 #### 二、方法调用的基础 Java程序的核心通常是从`main`方法开始执行的。`main`方法是一个特殊的静态方法,其签名如下: ...

    最强destoon首页模块调用方法

    除了公告栏模块外, Destoon 首页模块调用方法还可以调用其他模块,例如行情速递模块和供求求购模块。行情速递模块是指显示行情信息的模块。该模块可以显示最新的行情信息,并且提供链接到详细信息的页面。供求求购...

    Struts2 动态方法调用(十三)

    在Struts2的动态方法调用中,URL路径可以解析成Action类的实例和一个要执行的方法。例如,`/module/action` 可能会映射到 `ModuleAction` 类并调用其 `action` 方法。这种机制依赖于Struts2的核心组件,如...

    VHDL语言中的元件调用方法应用

    元件调用方法可以分为两大类:组件调用和实例调用。 组件调用是指在电路设计中使用已经定义的电路模块(实体),这些模块可以来自标准库中,也可以是自己或他人以前编译过的实体。组件调用可以使用component语句来...

    c++ 类的互相调用的方法

    当类A需要访问类B的私有或受保护成员,而类A本身没有这样的权限时,可以声明类B的某个函数为类A的友元。友元函数不是类的成员,但它可以像成员函数一样操作类的内部数据。 ```cpp class ClassB { private: int ...

    C++调用Java方法

    Android Studio项目,此Demo实现Java调用C++函数,然后C++函数回调Java方法、纯C++直接调用Java方法,此为github地址链接

    VC++ 调用 C#生成DLL的多种方法

    "VC++ 调用 C#生成DLL的多种方法" 本文将详细介绍 VC++ 调用 C# 生成 DLL 的多种...VC++ 调用 C# 生成 DLL 的方法有很多,开发者可以根据自己的需求选择合适的方法。这些方法的优点和缺点也需要开发者进行权衡和选择。

    javascript 直接调用OC 方法demo

    这样,JavaScript就可以通过`jsCallMethod`调用这个方法,并传递参数。 五、JavaScript调用OC方法 在JavaScript代码中,我们可以获取JSContext对象,然后调用对应的Objective-C方法。例如: ```javascript var my...

    通过java类的路径实例化类并调用方法

    通过java类的路径实例化类并调用方法:仅仅知道类的路径,就可以实例化对象,利用反射机制调用其方法

    Winform中使用CefSharp和js互相调用方法

    Winform中使用CefSharp和js互相调用方法,Winform中使用CefSharp和js互相调用方法,Winform中使用CefSharp和js互相调用方法,Winform中使用CefSharp和js互相调用方法 vs2019.debug目录下有cef所需要的文件,在其他...

    mfcdll调用方法

    MFCDLL调用方法是Windows编程中的一种常见技术,它涉及到动态链接库(DLL)的使用,特别是MFC(Microsoft Foundation Classes)库中的DLL。在Windows应用程序开发中,DLL能够帮助我们实现代码重用,减少内存占用,并...

Global site tag (gtag.js) - Google Analytics