upcasting相关内容
我刚开始学习java::Inheritance,在混合Up-Casting时感到困惑. 类示例{公共无效方法一(){System.out.println("Example::Method_1");}公共无效方法二(){System.out.println("Example::Method_2");}}公共类测试扩展示例{public void methodTwo(){//方法覆盖System.o
..
我可以这样做吗? class A { ... };B类:私人A{const A &foo() const{返回 *((const A *)this);}}; 我可以将继承自基类的子类转换为基类的公共版本吗?我可以在没有虚拟方法的情况下执行此操作吗? 我的猜测是肯定的,但我想确保它安全/便携. 解决方案 Yes you can: §5.4/7 of the standard:
..
我是 C#(和 OOP)的新手.当我有如下代码时: class Employee{//一些代码}班主任:员工{//一些代码} 问题 1:如果我有其他代码可以做到这一点: Manager mgr = new Manager();雇员 emp = (雇员)mgr; 这里的 Employee 是一个 Manager,但是当我把它像这样转换成一个 Employee 时,这意味着我在向上转换它吗?
..
就类变量而言,向上转型和向下转型有什么区别? 例如在下面的程序类中Animal只包含一个方法而Dog类包含两个方法,那么我们如何将Dog变量转换为Animal变量. 如果转换完成,那么我们如何使用Animal的变量调用Dog的另一个方法. 类动物{public void callme(){System.out.println("在动物的呼唤中");}}类狗扩展动物{public vo
..
我试图up弃一个物体.但是在运行时,对象类仍保留为派生类. Derived drv = new Derived();Base base =(基础)drv;System.out.println("Class:" + base.getClass());//打印->类别:类别packagename.Derived 那为什么类属性没有变化? 解决方案 那为什么类的属性没有变化?
..
下面是原始代码, message Animal { optional string name = 1; optional int32 age = 2; } message Dog{ optional string breed = 1; } 然后使用上述原型 public class InheritanceTest { public s
..
它将编译: import scala.collection._ trait Foo[A, +This def bar: This = (this: SortedSetLike[A,This]).empty
..
我完全不知道如何在类A中没有参数的情况下调用构造函数. 在此特定示例中,向上转换如何工作?当我们生成A ab = bb;时,ab到底指的是什么? public class A { public Integer a; public Float b; public A() { a = 1; b = 1.0f; } pub
..
我有几个类,都是从相同的基本类型派生的. class basetype{} class TypeA : basetype{} class TypeB : basetype{} ... 其中许多存储在列表中. List myObjects 与往常一样,每种类型的处理方式都必须不同.现在,我有两种方法可以处理它们,还有一个以基类型为参数的方法. Handl
..
我试图理解Java中的向上转换和向下转换,并且对以下情况(关于我的代码,在下面)感到困惑: 首先-为什么当我包含行myAnimal.bark();, 时为什么代码无法编译 和第二个-(假设我注释了myAnimal.bark();)为什么调用myAnimal.move()打印"moveDog"而不是"moveAnimal"? myAnimal是否不限于Animal类中的方法,因为即使我们将
..
我刚刚开始学习java :: Inheritance,并且在混合使用Up-Casting时感到困惑. class Example{ public void methodOne(){ System.out.println("Example::Method_1"); } public void methodTwo(){ System
..
我可以将一个对象上载到其父对象吗? 示例代码 class ClassA { public function foo(){ echo get_class($this); } } class ClassB extends ClassA { public function foo(){ echo get_class($this); // prints Class
..
考虑这些类别: public class Animal{ } public class Dog extends Animal{ } public AnimalTest(){ public static void main(String[] args){ Dog d = new Dog(); Animal a = d; } } 我的问题是,
..
我有以下示例代码: class Serializable {}; class MyData : public Serializable {}; void GetData( Serializable& ) {} template void GetData( T& data ) { std::istringstream s{"test"}; s >>
..
尝试理解Java中的upcasting。最近观察到的奇怪行为。 示例: 公共类A扩展B { public int i = 2; public void printI(){ System.out.println(“print i =”+ this.i); } public static void main(String [] args){ B a = ne
..
我有一个由接口定义的类 public interface Test { void testMethod(); } 测试测试=新的TestImpl(); 公共类TestImpl实现测试{ @Override public void testMethod(){ //这里什么都不做 } public void anotherMethod(){ //我只在实现中添
..
我知道在stackoverflow中有很多文章/问题描述了Java中的向上转换和向下转换。我知道什么是向上倾斜和向下倾斜。但我的问题并不是特别的。 Upcasting - 从子节点转换为父节点 - 编译器需要注意。不需要演员阵容 向下转换 - 从父母到孩子的转换 - 需要明确演员? public class Animal { public void getAnimalNa
..
当java可以隐式执行转换时,为什么不隐式执行转换?请用一些简单的例子来解释一下? 解决方案 关键是,向上转换总会成功,所以它是安全的 - 而向下转换可能会失败: String x = getStringFromSomewhere(); 对象y = x; //这将*总是*工作 但是: Object x = getObjectFromSomewhere()
..