精华内容
下载资源
问答
  • Java多态之父类调用子类方法//多态的体现import javax.print.attribute.standard.RequestingUserName;import java.util.Scanner;public class testfather {public static void main(String[] args){Animal a = new...

    package test1;

    Java多态之父类调用子类的方法//多态的体现

    import javax.print.attribute.standard.RequestingUserName;

    import java.util.Scanner;

    public class testfather {

    public static void main(String[] args)

    {

    Animal a = new fish(); //父类对象被赋以子类类型

    /*Animal a;

    fish b = new fish b;

    a= b

    ; //向上转型,不丢失精度

    a.talk();*/ //可达到相同效果

    a.talk(); //fish覆写animal talk方法

    Animal c = new bird();

    //C.talk2(); //不能实现,因为animal中没有此方法,必须向下转型

    bird b = (bird)c; //如果不进行转换,父类无法看到子类新扩充的方法

    b.talk2();

    }

    }

    class Animal

    {

    public void talk() //如果父类方法不想被覆写,可改为public

    static

    void talk()

    {

    System.out.println("walk");

    }

    }

    class fish extends Animal

    {

    public void talk()

    {

    System.out.println("swim");

    }

    }

    class bird extends Animal

    {

    public void talk()

    {

    System.out.println("fly");

    }

    public void talk2()//父类中没有此方法,调用必须进行强制转换,向下转型。

    {

    System.out.println("i am a bird");

    }

    }

    展开全文
  • 父类能调用子类的方法吗?答:能。...● 父类调用子类的静态方法。案例展示:package com.ywq;public class Test2{public static void main(String[] args){Son son = new Son();Father father=new...

    父类能调用子类的方法吗?

    答:能。

    怎么做?

    ● 把子类传递到父类的有参构造中,然后调用。

    ● 使用反射的方式调用,你使用了反射还有谁不能调用的?!

    ● 父类调用子类的静态方法。

    案例展示:

    package com.ywq;

    public class Test2{

    public static void main(String[] args)

    {

    Son son = new Son();

    Father father=new Father(son);

    father.fun1();

    father.fun4();

    }

    }

    class Father{

    public Son son;

    public Father(Son son){

    this.son=son;

    }

    public Father() {

    }

    public void fun4(){

    //方法3:使用反射的方式调用子类方法

    try {

    Class cls=Class.forName("com.ywq.Son");

    Son son=(Son) cls.newInstance();

    son.fun2();

    } catch (Exception e) {

    e.printStackTrace();

    }

    }

    public void fun1(){

    //方法1:把子类传递到父类的有参构造函数中,然后调用。

    System.out.println("我是父类的方法");

    son.fun2();

    //方法2:父类调用子类的静态方法。

    Son.fun3();

    }

    }

    class Son extends Father{

    public static void fun3(){

    System.out.println("我是子类的静态方法");

    }

    public void fun2(){

    System.out.println("我是子类的方法");

    }

    }

    这三种都是父类直接调用子类的方法,

    好用不?好用!

    解决问题了吗?解决了!

    项目中允许使用不?不允许!

    我就一直没有搞懂为什么要用父类调用子类的方法。如果一定要调用子类,那为什么要继承它呢?搞不懂。其实这个问题可以换个角度去理解,父类建立框架,子类在重写了父类部分的方法后,再调用从父类继承的方法,产生不同的结果(而这正是模板方法模式)。这是不是也可以理解为父类调用了子类的方法呢?你修改了子类,影响了父类行为的结果,曲线救国的方式实现了父类依赖子类的场景,模板方法模式就是这种效果。

    ---------------------

    作者:温柔狠角色

    原文:https://blog.csdn.net/qq_25827845/article/details/52916513

    展开全文
  • 父类 FatherClasspackage 父类子类方法调用顺序;/*** 父类* @author shundong**/public class FatherClass {private int i =0;private String name;/*** 父类无参构造*/FatherClass(){System.out.println("--父类...

    72179caa5bbd6312193e3f4def916f42.png

    父类 FatherClass

    package 父类与子类方法调用顺序;

    /**

    * 父类

    * @author shundong

    *

    */

    public class FatherClass {

    private int i =0;

    private String name;

    /**

    * 父类无参构造

    */

    FatherClass(){

    System.out.println("--父类无参构造--");

    }

    /**

    * 父类带参构造

    * @param name

    */

    FatherClass(String name){

    this.name=name;

    System.out.println("--父类带参构造--"+this.name);

    }

    /**

    * 父类静态代码块

    */

    static{

    System.out.println("--父类的静态代码块--");

    }

    /**

    * 父类非静态代码块

    */

    {

    ++i;

    System.out.println("--父类的非静态代码块--"+i);

    }

    /**

    * 父类的方法

    */

    public void speak(){

    System.out.println("--父类的方法--");

    }

    //加入一个main程序后

    public static void main(String[] args) {

    System.out.println("--父类主程序--");

    FatherClass father=new FatherClass("父类");

    father.speak();

    }

    }

    结果:

    b20815a18eef1fcdcf18e69b5ea380fd.png

    子类 SonClass

    package 父类与子类方法调用顺序;

    /**

    * 子类

    * @author shundong

    *

    */

    public class SonClass extends FatherClass {

    private String name;

    /**

    * 子类无参构造

    */

    SonClass(){

    System.out.println("--子类无参构造--");

    }

    /**

    * 子类带参构造

    * @param name

    */

    SonClass(String name){

    this.name=name;

    System.out.println("--子类带参构造--"+this.name);

    }

    /**

    * 子类静态代码块

    */

    static{

    System.out.println("--子类静态代码块--");

    }

    /**

    * 子类的非静态代码块

    */

    {

    System.out.println("--子类的非静态代码块--");

    }

    /**

    * 重写父类方法

    */

    @Override

    public void speak(){

    System.out.println("--子类重写(Override)了父类的方法--");

    }

    //然后再加入一个main函数

    public static void main(String[] args) {

    System.out.println("--Main主程序调动--");

    FatherClass father=new FatherClass("父亲");

    father.speak();

    SonClass son=new SonClass("儿子");

    son.speak();

    }

    }

    结果

    1457e4d27fd399af4aa0aa94f871dc4c.png

    展开全文
  • 我正在学习Java入门课程,我们才刚刚开始学习继承。我正在完成一项任务,要求我们创建一个具有名称和年龄...我试图在中调用get这些独特特征的方法Main,但似乎只能找到超类中的方法。这是主类:public class Kennel...

    我正在学习Java入门课程,我们才刚刚开始学习继承。我正在完成一项任务,要求我们创建一个具有名称和年龄的“宠物”超类。和三个子类,每个子类都有自己的独特特征(我选择了“狗”,“猫”和“鸟”)。构建完所有这些之后,我们将创建一个Main类来测试所有内容,这就是我遇到问题的地方。我试图在中调用get这些独特特征的方法Main,但似乎只能找到超类中的方法。

    这是主类:

    public class Kennel {

    public static void main(String[] args) {

    // Create the pet objects

    Pet cat = new Cat("Feline", 12, "Orange");

    Pet dog = new Dog("Spot", 14, "Dalmation");

    Pet bird = new Bird("Feathers", 56, 12);

    // Print out the status of the animals

    System.out.println("I have a cat named " + cat.getName()

    + ". He is " + cat.getAge() + " years old."

    + " He is " + cat.getColor()

    + "When he speaks he says " + cat.speak());

    System.out.println("I also have a dog named " + dog.getName()

    + ". He is " + dog.getAge() + " years old."

    + " He is a " + dog.getBreed()

    + " When he speaks he says " + dog.speak());

    System.out.println("And Finally I have a bird named "

    + bird.getName() + ". He is " + bird.getAge() + " years old."

    + " He has a wingspan of " + bird.getWingspan() + " inches."

    + " When he speaks he says " + bird.speak());

    }

    }

    这是我的超人

    abstract public class Pet {

    private String name;

    private int age;

    // Constructor

    public Pet(String petName, int petAge) {

    this.name = petName;

    this.age = petAge;

    }

    // Getters

    public String getName() { return(this.name); }

    public int getAge() { return(this.age); }

    // Setters

    public void setName(String nameSet) { this.name = nameSet; }

    public void setAge(int ageSet) { this.age = ageSet; }

    // Other Methods

    abstract public String speak();

    // toString

    @Override

    public String toString() {

    String answer = "Name: " + this.name + " Age: " + this.age;

    return answer;

    }

    }

    这是子类之一(它们看起来都一样并且有相同的错误)

    public class Cat extends Pet {

    private String color;

    // Constructor

    public Cat(String petName, int petAge, String petColor) {

    super(petName, petAge);

    this.color = petColor;

    }

    // Getters

    public String getColor() { return(this.color); }

    // Setters

    public void setColor(String colorSet) { this.color = colorSet; }

    // Other Methods

    @Override

    public String speak() { return "Meow!"; }

    // toString

    @Override

    public String toString() {

    String answer = "Name: " + super.getName() + " Age: "+super.getAge()

    + " Color: " + this.color;

    return answer;

    }

    }

    因此,发生的事情是我无法找到主要方法来找到该cat.getColor()方法,或者无法找到子类独有的其他方法。

    展开全文
  • 父类 ``` public class Father { public Father(){ protected_method(0); protected_method(1); } public Integer protected_method(int i){ Integer integer= new Integer(i); return ...
  • Java多态之父类调用子类方法//多态的体现import javax.print.attribute.standard.RequestingUserName;import java.util.Scanner;public class testfather {public static void main(String[] args){Animal a = new...
  • 文章开始前,我们先抛出一个链式问题:Java父类调用子类方法吗?如果不可以,原因?如果可以,如何做?每种实现方式,在实际项目被允许吗?不被允许的原因有哪些?如果在实际项目中,的确有这样的特殊业务场景...
  • 父类 FatherClasspackage 父类子类方法调用顺序;/*** 父类* @author shundong**/public class FatherClass {private int i =0;private String name;/*** 父类无参构造*/FatherClass(){System.out.println("--父类...
  • Java父类子类方法调用顺序 父类 FatherClass package 父类与子类方法调用顺序; /** * 父类 * @author shundong * */ public class FatherClass { private int i =0; private String name; /** * 父类无参...
  • 1.Java父类调用子类方法吗? 答案:能 1.1 实现方式描述 (1)父类中的抽象方法让子类实现并返回 (2)通过注册监听,然后通过回调接口调用子类相关方法 (3)在父类中通过反射调用子类的相关方法 (4)在...
  • Java父类调用子类

    2015-06-05 14:42:13
    因为父类根本不知道是谁要继承自己,所以一般情况下不能调用子类,但还是有特殊的情况.package com.skymr.learn; /** * 父类调子类方法 * @author skymr * */ public class SubParentTest extends ParentClass{...
  • 父类能调用子类的方法吗?答:能。...● 父类调用子类的静态方法。案例展示:package com.ywq;public class Test2{public static void main(String[] args){Son son = new Son();Father father=new...
  • 父类能调用子类的方法吗?答:能。...父类调用子类的静态方法。案例展示:package com.ywq;public class Test2{public static void main(String[] args){Son son = new Son();Father father=new Fathe...
  • 父类能调用子类的方法吗?答:能。...● 父类调用子类的静态方法。案例展示:package com.ywq;public class Test2{public static void main(String[] args){Son son = new Son();Father father=new...
  • 实现 把子类传递到父类的有参构造中,...父类调用子类的静态方法 package Quote; public class demo { public static void main(String[] args) { Son son = new Son(); Father father = new Father(son); ...
  • java父类调用子类中的方法

    千次阅读 2013-06-16 22:28:33
    main方法中是可以的,父类是不能调用子类方法的。从面向对象上来说吧。 父类先于子类存在,子类从父类中生...简单点就是在JAVA父类是不能调用子类方法的。 实际上调用的是你new的是哪个,就是那个,也就是子类
  • 1.若是父类构造器调用了被子类重写的方法,且经过子类构造函数建立子类对象,调用了这个父类构造器(不管显示仍是隐式),就会致使父类在构造时实际上调用的是子类覆盖的方法(你须要了解java继承中的初始化机制)。java...
  • 父类的引用指向子类的对象,要调用的就是父类方法而不是子类方法,比如说定义一个父类animal类,一个子类 鸟类,鸟类有个独有的方法飞行。现在的情况是 Animal animal = new Bird (); 你要调用 animal.fly();...
  • java中当调用某个类的构造方法的时候,系统总会调用父类的非静态初始化块进行初始化,这个调用是隐式的,而且父类的静态初始化代码块总是会被执行,接着调用父类的一个或者多个构造器执行初始化,这个调用也可以通过...
  • 之前一直以为 this关键字 是指调用者对象,但是这次才真正理解,this代表当前对象,但是指向调用者对象,其实就是多态的用法,如下所示:B 继承了 A,在B 中调用A类的方法,在A 中用this 访问成员变量和方法,此时,...
  • 主要介绍了Java父类调用子类方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • 构造方法调用流程 class parent{ //父类 parent(){ System.out.println(“调用父类的parent()构造方法”); } } class Subparent ...System.out.println(“调用子类的Subparent()构造方法”); } } public class...
  • (看来是真的要形参完全相同才能覆盖)那么在调用t.g(20L)的时候,g函数里面再调用f(x),那么现在是去找f(x),要注意,是在父类里面找(不会到子类去找的,因为g函数是父类的。)找的时候首先找void f(long x),没找到,...
  • Collection c = new HashSet(); c.add("hellow");...用父类调用子对象时不能调用子类中特有的方法,但是当需要调用时会很方便只需new HashSet()改成其他的子类名即可,例如可以改成new LinkList();
  • 父类引用默认调用子类重写的方法如果父类的引用p指向了子类的实例,则通过这个引用p访问同名方法时,调用的是子类重写的方法父类引用p可以指向不同的子类,调用不同子类重写的不同的同名方法,进而达到类间多态的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 9,126
精华内容 3,650
关键字:

java父类调用子类方法

java 订阅