Tag: 类超类

Java:超类和子类

可以将子类变量强制转换为其任何超类吗? 可以为超类变量分配任何子类变量吗? 可以为超类分配任何变量吗? 如果是这样,接口变量是否可以从任何实现类中分配一个变量?

从子类更改超类实例变量的值

我发现我可以在子类中这样做: ParentClass.variable = value; 但我被告知最好使用get / set方法,而不是直接访问类外的变量。 虽然这是因为我在另一个类中有一个类的实例,而不是子类和超类。 那么有没有更好的方法来做到这一点,哪种方式通常被认为是最佳实践?

初始化时你称之为超类和子类?

List list = new ArrayList(); 在识别除超类和子类之外的部分时,List和ArrayList是什么? List是引用和ArrayList的类吗? 如果他们是相同的,他们会被称为别的东西: ArrayList list = new ArrayList();

使用Java中的其他方法的子类

我在Java中有一个子类的问题。 我有以下课程: MainIterator implements Iterator{ //… Methods from the interface Iterator public void foo(){ //Do something… } } 在我的主要class级我打电话: Iterator i = new MainIterator(); i.foo(); 哪个不起作用,因为Iterator没有实现函数foo() 。 如果没有i的类型,怎么可能让这个工作? i必须来自Iterator类型。

ArrayList包含同一个超类的不同对象 – 如何访问子类的方法

嗨,我想知道我的问题是否有一个简单的解决方案, 我有一个ArrayList : ArrayList animalList = new ArrayList(); /* I add some objects from subclasses of Animal */ animalList.add(new Reptile()); animalList.add(new Bird()); animalList.add(new Amphibian()); 它们都实现了一个方法move() – 当调用move()时, Bird会飞。 我知道我可以通过使用它来访问超类的常用方法和属性 public void feed(Integer animalIndex) { Animal aAnimal = (Animal) this.animalList.get(animalIndex); aAnimal.eat(); } 这很好 – 但现在我想访问子类Bird具有的move()方法。 我可以通过将Animal像Bird一样来做到这一点: Bird aBird = (Bird) this.animalList.get(animalIndex); aBird.move(); 在我的情况下,我不想这样做,因为它意味着我有3个不同的上述代码集,每个Animal子类型一个。 这似乎有点多余,有更好的方法吗?

为什么它在子类对象中为超类变量存储或分配内存?

在以下代码中 – class Mammal { String name = “furry “; String makeNoise() { return “generic noise”; } } class Zebra extends Mammal { String name = “stripes “; String makeNoise() { return “bray”; } } public class ZooKeeper { public static void main(String[] args) { new ZooKeeper().go(); } void go() { Mammal m = new […]

Java:inheritance的类构造函数正在调用Super类

在创建java程序时我遇到了问题, 子类构造函数通过调用Superclass的方法抛出Error 代码类似于: class Manage { public static void main(String[] args) { Manager m1 = new Manager ( 35 ); } } class Employee { int emp_id; public Employee(int id) { this.emp_id = id; } public int get_id() { return emp_id; } } class Manager extends Employee { public Manager(int id ) { this.emp_id = […]

Java:在超类方法签名中返回子类

我正在研究一个问题,其中有几个Foo实现,伴随着几个FooBuilder 。 虽然Foo共享几个需要设置的常见变量,但它们也有不同的变量,需要各自的FooBuilder来实现某些特定的function。 为了简洁,我想让FooBuilder的setter使用方法链,比如: public abstract class FooBuilder { … public FooBuilder setA(int A) { this.A = A; return this; } … } 和 public class FooImplBuilder extends FooBuilder{ … public FooImplBuilder setB(int B) { this.B = B; return this; } public FooImplBuilder setC(int C) { this.C = C; return this; } … } 依此类推,有几种不同的FooBuilder实现。 […]

Javainheritance中的私有成员

我被告知,对于Java子类,它可以inheritance其超类的所有成员。 这甚至意味着私人会员呢? 我知道它可以inheritance受保护的成员。 谁可以给我解释一下这个。 我现在完全糊涂了。

了解上限和下限? 在Javagenerics中

我真的很难理解外卡参数。 我有几个问题。 ? 作为类型参数只能在方法中使用。 例如: printAll(MyList)我无法定义类? 作为类型参数。 我明白了上限? 。 printAll(MyList)表示:“ printAll将打印printAll如果它具有实现Serialzable接口的对象。 ” 我对super有点问题。 printAll(MyList)表示:“ printAll将打印printAll如果它有MyClass对象或任何扩展MyClass类( MyClass的后代)。 ” 在我出错的地方纠正我。 简而言之,只有T或E或K或V或N可用作定义generics类的类型参数。 ? 只能用于方法 更新1: public void printAll(MyList){ // code code code } 根据Ivor Horton的书MyList MyList意味着我可以打印MyList如果它有MyClass对象或它实现的任何接口或类。 也就是说, MyClass是一个下限 。 它是inheritance层次结构中的最后一个类。 这意味着我最初的假设是错误的。 所以,如果MyClass看起来像: public class MyClass extends Thread implements ActionListener{ // whatever } 然后, printAll()将打印if 1.列表中有MyClass对象 2. List有Thread或ActionListener对象 更新2: […]