我目前在一个基于Java的大学类里面,对于编码示例,教授正在使用protected字段供子类访问。我问这是否是不好的做法,并被告知这是正常的。是这样吗,为什么不对抽象方法使用setter和getter?我认为除非另有要求,否则最好限制尽可能多的信息。我对abstract父类使用setter和getter进行了测试,它适用于子类化的abstract父类。虽然抽象类不能被实例化,但据我所知,当子类被实例化时,它们仍然可以用来创建对象。这是一个简短的例子:publicabstractclassAnimal{protectedintheight;}publicclassDogextendsAn
我曾经为我的应用程序设置了一个自定义首选项类。对于我的下一个爱好项目,我想切换到PreferencesAPI。但是put和get函数需要一个默认值,我不想在所有源文件中散布默认值。尽管我的项目很小,但我无法想象在整个源代码中更改默认值。你们都是怎么用api的?我正在考虑将首选项api包装在另一个类中,但是使用该API的意义何在,因为它只会消除将文件保存到磁盘的负担,而使用序列化并不难吗?我错过了重点吗? 最佳答案 您在这里混合了一些概念。规范中给出的默认值应针对本地情况作为“合理的默认值”。如果你想拥有应用程序范围的默认值,那么你需
我有2个Java包,A和B。假设包B中的一些类想要使用包A中的一些类,但是,当开发人员出现并开发包C(或者说,应用程序C)时,他/她将使用我的包B,但我不希望他/她能够使用B正在使用的A中的类。也就是说,我希望包A中的类是包私有(private)的,这样它们对应用程序开发人员是隐藏的。但是,我确实希望我自己的包B能够访问那些包私有(private)的类。这可以用Java完成吗?我基本上只需要硬着头皮公开这些类,只希望用户不要尝试使用它们吗?或者,我是否需要在B中复制A中的类?我的偏好是不是hack-y的东西(即我不想使用反射)。帮忙? 最佳答案
我需要制作一个项目,该项目具有使用Java的面向对象编程的所列特征。有人可以查看我的快速示例程序以确认我了解这些特性是如何实现的,并且它们都存在并且正确完成了吗?packageExample;publicclassParent{privateinta;publicvoidsetVal(intx){a=x;}publicvoidgetVal(){System.out.println("valueis"+a);}}publicclassChildextendsParent{//privatefieldsindicateencapsulationprivateintb;//Childinhe
我意识到这是一个非常基本的问题,但它一直困扰着我。据我了解,如果您在Java中声明一个字段为私有(private),那么它在该类之外是不可见的。如果它受到保护,那么它可用于继承的类和同一包中的任何东西(如果这些定义中的任何一个不正确,请纠正我)。这是否意味着不能声明一个只能由继承类访问而不能在同一包中的其他非继承类访问的字段?我很欣赏有很多方法可以解决这个问题,但是在某些情况下您会想要这种行为吗?显然上述问题适用于方法和字段。非常感谢。 最佳答案 参见:http://java.sun.com/docs/books/tutoria
在Java中,对象是否封装了数据,以至于同一类的其他实例也无法访问数据?仅当使用关键字“private”时?Java中的“访问器方法”是什么-像getName()这样的方法?谢谢 最佳答案 我不倾向于认为它是一个对象可以访问另一个对象,而是什么代码可以访问一个对象中的什么数据。在Java(和C#,顺便说一句)中,类中的代码可以访问同一类的任何对象的私有(private)成员。然后您将获得包/程序集访问权限和公共(public)访问权限。棘手的是protected访问,它是某种对子类中代码的访问——但这取决于目标对象:只有当对象是一个
我有一个Main.java文件:publicclassMain{privateEntityDrawerentityDrawer;publicvoidsetEntityDrawer(EntityDrawerentityDrawer){this.entityDrawer=entityDrawer;}publicEntityDrawergetEntityDrawer(){returnentityDrawer;}}classEntityDrawer{privateEmpleadoempleado;publicEmpleadogetEmpleado(){returnempleado;}publi
我无法理解为什么Java安全编码很重要。例如,为什么声明变量私有(private)很重要?我的意思是我知道这将使得无法从类外部访问这些变量,但我可以简单地反编译类以获取值。同样,将一个类定义为final将无法子类化该类。什么时候对一个类进行子类化对安全性是危险的?同样,如果有必要,我可以反编译原始类并使用我想要的任何恶意代码重新实现它。当用户“信任”应用程序时是否会出现问题?然后人们可以以某种方式滥用这种信任?基本上我正在寻找的是一个很好的例子,说明为什么应该遵循安全编码指南。 最佳答案 编程很难。如果您定义严格的API,不公开不应
这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:AbsenceofpropertysyntaxinJava看下面的情况:classTestextendsObject{privateintx;publicgetX(){returnx;}publicsetX(int_x){x=_x;}}如您所见,没什么特别的。但是,我想知道是否有可能以一种使用该类的人不需要使用getX()的方式保留“私有(private)x”,换句话说,如果我可以映射一些自动调用的变量获取和设置。类似于Delphi中的“属性”。它会避免在复杂表达式中使用setX()和getX()的需要,并且
考虑以下代码片段:packagevehicle;publicabstractclassAbstractVehicle{protectedintspeedFactor(){return5;}}packagecar;importvehicle.AbstractVehicle;publicclassSedanCarextendsAbstractVehicle{publicstaticvoidmain(String[]args){SedanCarsedan=newSedanCar();sedan.speedFactor();AbstractVehiclevehicle=newSedanCar(