精华内容
下载资源
问答
  • 向上转型后 实例不能访问子类特有的属性与方法,但这个“父类”调用自己的方法时,调用到的却还是子类overrided的. 问1:有什么方法能让向上转型后的类调用没被重写过的方法?//即在不修改类的构造情况 下使输出 为...
  • 请教高人下述代码,当子类向上转型,成为父类时,此时的父类,成员变量访问的是父类的,而方法却是子类的,这是怎么回事? 我认为强转后,应该都访问子类的呀. package com.ocjp.polymorphism; public class ...
  • 父类 子类向上,向下转型

    千次阅读 2018-07-15 19:00:11
    父类 pet子类 Dog子类 qiE 向上转型: Dog dog =new(); pet dog=new Dog();pet必须是Dog的父类,才可以向上转型,类似自动类型转换 向下转型 : Pet pet=new Dog(); Dog dog=(Dog)pet; 类似强制类型转换 ,然而向下...
    父类 pet
    子类 Dog
    子类 qiE

        向上转型:   Dog dog =new();

                          pet dog=new Dog();

    pet必须是Dog的父类,才可以向上转型,类似自动类型转换

       向下转型 :  Pet pet=new Dog();

                        Dog dog=(Dog)pet;

       类似强制类型转换 ,然而向下转型容易出现异常,所以需要用instanceof 判断类型是否转换成功。

     
              if(animal instanceof qiE){ //企鹅子类
            	   qiE q3=(qiE) animal;
            	   System.out.println(q3);
            	   q3.swim();
              }else{
            	   Dog dog =(Dog) animal; //语法上没错但是不能这么转,所以需要判断一下向下转换能转哪种类型 
            	   System.out.println(dog);//狗子类
                   dog.flyDisk();
              }

    向上转型的话只能调用父类通用的方法,而不能调用子类独有的方法。想要调用子类·独有的方法,则需要向下转型

    词总结 cast  转换  subway地铁

     

    展开全文
  • 当父类引用实例指向子类对象(向上转型)时,实例只能够调用父类方法;但是如果子类重写了父类方法,实例就默认调用子类重写后的方法! (当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则编译...

     

    当父类引用实例指向子类对象(向上转型)时,实例只能够调用父类方法;但是如果子类重写了父类方法,实例就默认调用子类重写后的方法

    (当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则编译错误;如果有,再去调用子类的同名方法。)

    代码如下:

    class A {
            public String show(D obj){
                return ("A and D");
            }
            public String show(A obj) {
                return ("A and A");
            }
        }
    
        class B extends A {
            public String show(B obj) {
                return ("B and B");
            }
            public String show(A obj) {
                return ("B and A");
            }
        }
    
        class C extends B{}
        class D extends B{}
    
        public class Extends {
            public static void main(String args[]) {
                A a2 = new B();
                B b = new B();
                System.out.println(a2.show(b));
            }
        }

    执行后控制台输出“B and A”

    展开全文
  • java向上转型

    2018-12-14 23:54:48
    我的第一篇博客--java向上转 理解: 1. 测试方法参数是父类,传入子类参数,子类向上转型成父类类型, 2. java后期绑定的理解 2. 多态的初步理解

    java向上转型

    理解:
    1. 测试方法参数是父类,传入子类参数,子类向上转型成父类类型,
    2. java后期绑定的理解
    2. 多态的初步理解

    在这里插入图片描述

    展开全文
  • 以下Animal为父类,Dog,Cat作为子类,分别继承AnimalclassAnimal{public voidshout(){System.out.println("叫了一声");}}class Dog extendsAnimal{public voidshout() {System.out.println("旺旺旺");}public ...

    以下Animal为父类,Dog,Cat作为子类,分别继承Animal

    classAnimal{public voidshout(){

    System.out.println("叫了一声");

    }

    }class Dog extendsAnimal{public voidshout() {

    System.out.println("旺旺旺");

    }public voidseeDoor() {

    System.out.println("看门中");

    }

    }class Cat extendsAnimal{public voidshout() {

    System.out.println("喵喵喵");

    }

    }

    总结:

    1. Dog对象转成Animal对象可行,如d2

    Cat对象转成Animal对象可行,如c2

    2. d2作为Animal对象转成Dog对象可行。如d3,且可执行一个Dog特有的方法

    3. c2作为Animal对象转成Dog对象,编译通过,运行报错,显示 java.lang.ClassCastException,类型转化出错

    实例代码:

    1. Dog对象转成Animal对象可行,如d2

    Cat对象转成Animal对象可行,如c2

    public classTestPoym{public static voidmain(String[] args) {

    Dog d1= newDog();

    animalCry(d1);

    Animal d2= new Dog(); //向上转型

    animalCry(d2);

    Animal c1 = new Cat();

    animalCry(c1);

    Animal c2 = new Cat();

    animalCry(c2);

    }static voidanimalCry(Animal a) {

    a.shout();

    }

    }

    结果:

    51171ff4b4aa2dd566db270b2b8e1556.png

    2. d2作为Animal对象转成Dog对象可行。如d3,且可实现一个Dog特有的方法,看门

    public classTestPoym{public static voidmain(String[] args) {

    Dog d1= newDog();

    animalCry(d1);

    Animal d2= new Dog(); //向上转型

    animalCry(d2);

    Animal c1= newCat();

    animalCry(c1);

    Animal c2= newCat();

    animalCry(c2);

    Dog d3= (Dog)d2; //向下转型

    d3.seeDoor();

    }static voidanimalCry(Animal a) {

    a.shout();

    }

    }

    结果:

    bf79071682ee73167722ff63ab1c95be.png

    3.  c2作为Animal对象转成Dog对象,编译通过,运行报错,显示 java.lang.ClassCastException,类型转化出错

    代码:

    public classTestPoym{public static voidmain(String[] args) {

    Dog d1= newDog();

    animalCry(d1);

    Animal d2= new Dog(); //向上转型

    animalCry(d2);

    Animal c1= newCat();

    animalCry(c1);

    Animal c2= newCat();

    animalCry(c2);

    Dog d3= (Dog)d2; //向下转型

    d3.setDoor();

    Dog c3= (Dog)c2; //编译通过,运行出错,显示强制转换出错

    }static voidanimalCry(Animal a) {

    a.shout();

    }

    }

    结果:

    81af5da74b342e592209e18f3e9cb93a.png

    展开全文
  • 如果父类子类变量同名,向上转型后访问的是父类变量,那如果我想要访问子类变量该怎么做到?
  • 向上转型和向下转型

    2016-03-27 21:41:45
    向上转型:子类向上转型为父类 注意点:转型后父类与子类的同名函数中,子类的函数可以覆盖父类的函数,但子类自己定义的函数将被丢失 class A{ public void A1(){ System.out.println("父类方法1"); } ...
  • 比如Father fson = new Son(); 中, 情况1:fson调用函数funcA("haha"),这个函数在父类中有定义funcA(Object ...向上转型和静态绑定之间的关联又是什么呢???</p>
  • 用父类对象的引用 指向一个具体的子类实例 称为向上转型 也可以理解为将一个子类的对象转为父类的对象 向上转型为 隐式转型 自动的 向下转型(大人向小孩转 向下弯腰) 向下转型就是强转(必须强制转换...
  • 初学者在学习向上转型可能会很难理解,向上转型并不能调用子类特有属性和方法,我们必须先生成子类实例再赋值给父类引用(向上转型),然后将父类引用向下强制转换给子类引用(向下转型),这样才能调用子类中的所有成员...
  • 以下Animal为父类,Dog,Cat作为子类,分别继承AnimalclassAnimal{public voidshout(){System.out.println("叫了一声");}}class Dog extendsAnimal{public voidshout() {System.out.println("旺旺旺");}public ...
  • 初学者在学习向上转型可能会很难理解,向上转型并不能调用子类特有属性和方法,我们必须先生成子类实例再赋值给父类引用(向上转型),然后将父类引用向下强制转换给子类引用(向下转型),这样才能调用子类中的所有...
  • 类的向上转型: 父类(包括抽象类)创建的引用类型变量可以调用子类对象 父类引用类型变量应用子类对象时,调用方法只能调用父类中出现过的方法,如果方法被重写,调用的是子类中重写的方法。 普通类示例 父类:...
  • 向上转型只能够调用子类重写的方法,子类独有的方法在父类中根本没有定义,所以父类无法找到子类独有的方法。 package com.company; public class Main { public static void main(String[] args) { Person p = ...
  • 我们在学习向上转型可能会很难理解,向上转型并不能调用子类特有属性和方法,我们必须先生成子类实例再赋值给父类引用(向上转型),然后将父类引用向下强制转换给子类引用(向下转型),这样才能调用子类中的所有...
  • 向上转型子类引用的对象转换为父类类型称为向上转型。通俗地说就是是将子类对象转为父类对象。此处父类对象可以是接口向下转型:父类引用的对象转换为子类类型称为向下转型。前者是一个向上转型,Animal dog 引用...
  • 向上转型子类引用的对象转换为父类类型称为向上转型。通俗地说就是是将子类对象转为父类对象。此处父类对象可以是接口向下转型:父类引用的对象转换为子类类型称为向下转型。前者是一个向上转型,Animal dog 引用...
  • /*向上转型:子类的对象赋值给父类的引用(父类的引用所指向的属性是父类的属性) ,如此就可调用父类类的方法,而不可以调用自身的方法,但如果父类的方法被子类重写, 那就调用子类的方法 。好处:减少重复代码*/ ...
  • 在写这篇文章时,参考了很多前辈的理。... //重写:子类对父类中某些方法进行重新定义,在调用这些方法时就会调用子类的方法 //重写式多态,也叫运行时多态。这种多态通过动态绑定技术实现,是指在执行期间判断所引...
  • Java向上转型与向下转型 一.定义:  通俗理解向上转型:  就是子类转型成父类。  classA  {  }  classBextendsA  {  }  A b=new B();  这个就是向上转
  • 不过这种转换只有在基类(父类)和派生类(子类)之间才有意义,并且只能将派生类赋值给基类,包括将派生类对象赋值给基类对象、将派生类指针赋值给基类指针、将派生类引用赋值给基类引用,这在 C++ 中称为向上转型...
  • DEMO:向上转型发现了可以使用父类类型的变量调用子类覆写了父类的方法,但是为什么不调用Worker的say()方法呢?原因是具体调用哪一个子类覆写的方法是在运行期间根据具体你赋值的子类来确定的。思考:在之前我们说过,...
  • class A { // 定义类A ...// 子类通过extends继承父类 ...// 子类自己定义的方法 ...向上转型,父类子类都存在的方法,父类的会被覆盖,调用子类方法 父类没有子类优的方法,调用会出错
  • 今天做了一个测试的题目,发现...java中对象的转型分为向上转型和向下转型一、对象的向上转型1.1、定义子类引用的对象转换为父类类型称为向上转型。通俗地说就是是将子类对象转为父类对象。此处父类对象可以是接口...
  • 从 2 个名词开始说起:向上转型(upcasting)、向下转型(downcasting)。举个例子:有2个类,Father 是父类,Son 类继承自 Father。第 1 个例子:Fatherf1=newSon();// 这就叫 upcasting (向上转型)// 现在 f1 引用指向...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,433
精华内容 1,373
关键字:

子类向上转型