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类型。

Jasper子报告错误

com.hughes.exception.HughesException 在com.hughes.service.serviceImpl.HomeServiceImpl.sendTicketEmail(HomeServiceImpl.java:1094) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ………………………………………….. ….. …………………………………… 引起:net.sf.jasperreports.engine.JRException:找不到资源:nullinvoiceDetail.jasper at net.sf.jasperreports.repo.RepositoryUtil.getResource(RepositoryUtil.java:155) at net.sf.jasperreports.repo.RepositoryUtil.getReport(RepositoryUtil.java:126) at net.sf.jasperreports.engine.fill.JRFillSubreport.evaluateReport(JRFillSubreport.java:317) at net.sf.jasperreports.engine.fill.JRFillSubreport.evaluateSubreport(JRFillSubreport.java:347) at net.sf.jasperreports.engine.fill.JRFillSubreport.evaluate(JRFillSubreport.java:275) at net.sf.jasperreports.engine.fill.JRFillElementContainer.evaluate(JRFillElementContainer.java:257) at net.sf.jasperreports.engine.fill.JRFillBand.evaluate(JRFillBand.java:473) 在net.sf.jasperreports.engine.fill.JRVerticalFiller.fillColumnBand(JRVerticalFiller.java:2021) at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillDetail(JRVerticalFiller.java:755) at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReportStart(JRVerticalFiller.java:265) at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:128) at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:836) at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:765) at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:84) at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:624) 在com.hughes.service.serviceImpl.HomeServiceImpl.sendTicketEmail(HomeServiceImpl.java:1046) ……还有81个 JasperReport jasperReport = JasperCompileManager.compileReport(hdnWebInfPath+seperator+”reports”+seperator+”invoice.jrxml”); JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, model, new JREmptyDataSource()); JasperExportManager.exportReportToPdfFile(jasperPrint, fPath+seperator+fileName); 当简单报告不适用于子报告时,这是有效的…

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 = […]

JasperReports:封面

我有一个JasperReport,我想为这个报告创建一个封面。 封面页必须包含来自数据库的一些信息,如公司名称等。我试图使用子报表执行此操作,但我没有成功。 我创建了一个主报告,首先包含封面页作为子报表,然后将整个报表作为第二个子报表。 我得到一份空报告。 我的第二次尝试是将封面页面作为子报告放在主报告中,但这不起作用。 有什么提示怎么做? 非常感谢提前。

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实现。 […]