导航:首页 > 方法技巧 > java父类如何调用子类的方法

java父类如何调用子类的方法

发布时间:2022-12-30 12:31:51

⑴ Java中怎么让子类通过父类的方法去调用子类的方法

子类的对象在调用方法时,先在子类中查找,若方法不存在,则到父类中进行查找。

在调用父类中的方法时,在方法中继续调用方法,对这个方法的调用者为子类对象,还是按照上面的步骤寻找方法。

所以,子类在调用方法时,调用的都是本类方法,没有这个方法时,再调用父类中的方法。

⑵ java父类调用子类方法

//保存为Shape.java
import java.util.ArrayList;

public abstract class Shape {
public abstract void draw();
public static void main(String[] args) {
ArrayList shapes = new ArrayList();
shapes.add(new Square());
// shapes.add(new Shape()); // ERROR ONE
((Square)shapes.get(0)).draw();
// shapes.get(0).draw(); // ERROR TWO
}
}

//保存为Square.java
public class Square extends Shape {
public void draw () {
System.out.println("The square is being drawn.");
}
}

⑶ java指向子类的父类对象到底能不能调用子类的方法

你这个问题你问的没有太明确,我来大概解释一下吧。
首先你要知道多态的概念,有编译时多态(前期绑定),还有运行时多态(后期绑定),注意:C语言中只有编译时多态,但是java两者都有,java中除了static方法和final方法,其他所有的方法都是后期绑定,类成员变量也是前期绑定的,如果你对java的类初始化顺序有所了解就会明白,所以我们写程序的时候不必去指定是否应该去进行后期绑定,它是自动进行的
注意只有普通方法才可以是多态的,java中类的final方法,static方法,类成员变量,都是在编译的时候已经确定的,如果用父类引用指向子类对象,那么你可以自行代码测试,结论如下:
1.通过父类引用调用子类中重写父类的方法,那么会调用子类的重写方法,
2.通过父类引用调用子类中独有的方法,那么必须把父类引用强制转化成子类类型的引用才能进行调用。
3.通过父类引用调用子类重写父类的静态方法(子类中的这个方法和父类中的这个方法返修饰符,返回类型,方法名,参数列表完全相同,假定认为静态方法也可以重写吧),通过父类引用调用静态方法,不会有多态的特征,调用的还是父类的静态方法,因为java中静态方法和类是绑定的,而不是和单个对象绑定的。
4.通过父类引用调用子类和父类中同名的public变量,那么调用的是父类的成员变量,因为当子类对象转型为父类引用的时候,访问局部变量的操作都由编译器解析,因此不是多态的。子类对象中包含了两个同名的public变量(debug的时候你会看到子类对象中有两个变量),他自己的和他从父类得到的,所以通过父类引用指向子类对象而调用父类和子类同名的public 变量,那么会调用父类的public变量,而不是子类的public变量,因为是前期绑定,编译时候已经确定了调用哪一个,而不是通过父类引动态地选择用到底该调用哪一个变量。
反正记住一点,如果父类引用指向了子类对象,那么通过父类引用调用子类重写父类的普通方法,那么可以直接调用,如果通过父类引用调用子类独有的方法那么就得强制转换。

⑷ java 子类重写了一个方法,如何在父类中调用

java子类继承父类、方法的重写(覆盖)在程序中,如果想声明一个类继承另一个类,需要使用extends关键字。格式:class子类 extends父类

⑸ java父类对象可以调用子类独有的方法吗

可以的,要子类重写父类方法

packagedisruptor.demo2;

/**
*Createdbyhcqon2017/6/1.
*/
publicabstractclassFather{
privateStringname;

publicStringgetName(){
returnname;
}

publicvoidsetName(Stringname){
this.name=name;
}

publicvoidsysf(){
sysout();
}

publicabstractvoidsysout();

}

这个是父类,注意sysout()是虚拟方法

packagedisruptor.demo2;

/**
*Createdbyhcqon2017/6/1.
*/
publicclassSonextendsFather{

@Override
publicvoidsysout(){
System.out.println(getName());
}
}

这个是子类重写了父类的sysout()方法

packagedisruptor.demo2;

/**
*Createdbyhcqon2017/6/1.
*/
publicclassSonTest{
publicstaticvoidmain(String[]args){
Fatherfather=newSon();
father.setName("123");

father.sysf();
father.sysout();
}
}

这个是测试类,首先对象一定是子类的对象,子类没有的方法调用父类的,父类调子类的方法要先定义一遍

⑹ Java中父类调用子类地方法

饿 一楼不要误人子弟啊 那个方法不行的
用父类的引用创造子类对象时(new),只能访问子类所重写(overwrite)的方法,父类不存在的方法是不可以访问的。

阅读全文

与java父类如何调用子类的方法相关的资料

热点内容
乳腺增生治疗乳康方法 浏览:587
毛细血管锻炼方法 浏览:69
布边太紧有什么好方法 浏览:453
黄金果树苗种植方法 浏览:428
咽炎的分类及中医治疗方法 浏览:859
汽车固体打蜡方法及步骤 浏览:230
记忆枕的使用方法 浏览:344
商品住宅市场研究方法 浏览:750
如何化解饥饿的方法 浏览:107
牛不反应怎么解决方法 浏览:57
牙美如何使用方法 浏览:817
喝酒醉有什么解决方法 浏览:983
心血管病早期治疗方法 浏览:565
中药生地的功效与作用及食用方法 浏览:600
宝宝尿布折叠方法视频 浏览:487
物理考试怎么考好的方法 浏览:797
好方法解决盈亏问题 浏览:454
德育方法写成了德育原则怎么办 浏览:19
大益一星大白菜鉴别方法 浏览:264
研究圆锥的体积的实验方法 浏览:259