我有一个父类A和一个子类B,B重写了A的方法f。publicclassA{publicStringf(){return"A";}}publicclassBextendsA{...publicStringf(){return"B";}publicstaticvoidmain(String[]args){Bb=newB();Aa=(A)b;System.out.println(b.f());//prints:B}}我创建了一个B类型的对象b,并将其转换为A类型并将其分配给A类型的变量a,然后调用a上的方法f。现在我希望调用父类的方法,因为我正在使用类型A的对象,但它没有,它调用方法的b版本
作为一个(迂腐的)初学者Java程序员,我想知道,将所有子类使用的公共(public)代码块移动到单独的protected(final)父类中的方法?诸如用通用值填充列表或通用过滤算法等任务...是否也可以使用protected静态方法?classA{protectedfinalListgetVariants(){...}protectedfinalListfilterResults(Listvariants){...}}classBextendsA{publicListdoSomethingUsefull(){ListcommonVariants=getVariants();...r
有以下类:publicabstractclassSuper{publicabstractvoidrun();}publicclassSub1extendsSuper{@Overridepublicvoidrun(){System.out.println("Methodcalled");System.out.println("Sub1called");}}publicclassSub2extendsSuper{@Overridepublicvoidrun(){System.out.println("Methodcalled");System.out.println("Sub2called
我读到子类不能继承私有(private)字段或方法。然而,在这个例子中classSuperClass{privateintn=3;intgetN(){returnn;}}classSubClassextendsSuperClass{publicstaticvoidmain(String[]args){SubClasse=newSubClass();System.out.println("n="+e.getN());}}当我运行main时,我得到的输出为n=3。这似乎SubClass从SuperClass继承了私有(private)属性n。那么,请解释一下这里发生了什么。谢谢。
在java中,我们可以将父类(superclass)对象传递给子类引用吗?我知道这是一个奇怪的问题/实际上不可行,但我想了解这背后的逻辑为什么在java中不允许。classEmployee{publicvoidmet1(){System.out.println("met1");}}classSalesPersonextendsEmployee{@Overridepublicvoidmet1(){System.out.println("newmet1");}publicvoidmet2(){System.out.println("met2");}}publicclassReference
更准确地说,int是Integer类的一部分(精简版本之类的)还是完全是其他东西?我知道int是值类型,Integer是引用类型,但int是否继承自Object?(我假设在这方面int、long、boolean等都是相似的。选择int只是为了方便) 最佳答案 Java中的基本类型不是对象,也不继承自Object。自从Java1.5引入允许在int和Integer(以及其他类型)之间自动装箱。因为int不是不能用作通用类型参数的对象,例如T在list 关于java-int是Java中的对象
我有一个People类,以及从它继承的Student和Employee类。但是,如果我有一个人既是Student又是Employee......您将如何实现? 最佳答案 这是未正确分析问题域的典型示例。是的,在某些情况下,将“学生”视为一种“人”,将“员工”视为一种“人”可能是正确的,但是-根据您的问题领域-它也可能不合适.如果您的领域要求某些东西既是“学生”又是“雇员”,您应该考虑在您的问题领域中“学生”和“人”之间的关系是否真的是“is-a”关系。可能在这种特殊情况下,作为学生只是特定人的一个属性。所以,JohnDoe是一个人,
为什么Java不允许从构造函数为私有(private)的类继承? 最佳答案 Java不会阻止使用私有(private)构造函数对类进行子类化。publicclassMain{staticclassA{privateA(){System.out.println("SubclassedAin"+getClass().getName());}}staticclassBextendsA{publicB(){}}publicstaticvoidmain(String...ignored){newB();}}打印SubclassedAinMai
我正在尝试在抽象类中使用SpringCache,但它不起作用,因为据我所知,Spring正在抽象类中搜索CacheNames。我有一个使用服务层和Dao层的RESTAPI。这个想法是为每个子类使用不同的缓存名称。我的抽象服务类如下所示:@Service@TransactionalpublicabstractclassAbstractService{...@CacheablepublicListfindAll(){returngetDao().findAll();}}抽象类的扩展如下所示:@Service@CacheConfig(cacheNames="textdocuments")pu
我在加载一些对象时遇到了一个奇怪的问题。我正在使用JPA1、hibernate-core版本3.3.0.SP1和hibernate-entitymanager版本3.4.0.GA假设我有这些JPA实体:@Entity@Table(name="SLC_ELE")@Inheritance(strategy=InheritanceType.JOINED)@DiscriminatorColumn(discriminatorType=DiscriminatorType.INTEGER,name=ElementoPrograma.C_ID_CTG_ELE)publicclassElement{..