Tag: oop

Class内的接口

Q1。 我可以在java中的类中有一个接口吗? Q2。 我可以在界面中有一个类吗? 如果是,那么在哪种情况下应该使用这样的类/接口。

为什么要将对象分配给接口?

我曾多次听说过在实例化对象时你应该这样做: “Interface”name = new“Class”(); 例如,对于实现List的类链表: List name = new LinkedList(); LinkedList实现了许多接口,包括queue,deque等。上面的代码和之间有什么区别 LinkedList name = new LinkedList(); 要么 Queue name = new LinkedList(); 为什么必须两次指定类型; 这似乎是多余的,但oracledocs似乎并未提及它。

从活动之外的课程中启动意图

我有两个活动,其中一个叫做MyActivity 。 我希望他们俩能够使用位于我们可能称之为MyClass的类中的函数。 在MyClass ,我尝试使用intent来启动活动AnotherActivity 。 由于构造函数将上下文作为参数,我只是尝试在构造函数中存储活动的上下文,然后在我尝试创建我的intent时使用它。 class MyClass { private Context cxt; MyClass(Context cxt) { this.cxt = cxt; } startIntent() { Intent intent = new Intent(cxt, AnotherActivity.class); startActivity(intent); // this line throws a NullPointerException } } MyActivity中使用该类的代码如下所示: myClassObject = new MyClass(MyActivity.this); myClassObject.startIntent(); 但是,即使没有任何参数为null(使用简单的if语句检查), intent似乎为null并抛出NullPointerException 。 为什么它不起作用,我该怎么做才能解决问题? 我是Android和Java开发的新手,所以请尽可能地解释它。

在父类之间来回转换后,子对象是否会丢失其唯一属性

考虑以下类: public class Phone { private boolean has3g; public boolean has3g() { return has3g; } public void setHas3g(boolean newVal) { has3g = newVal; } } public class Blackberry extends Phone { private boolean hasKeyboard; public boolean hasKeyboard() { return hasKeyboard; } public void setHasKeyboard(boolean newVal) { hasKeyboard = newVal; } } 如果我要创建一个Blackberry实例,将其转换为Phone对象,然后将其转换回Blackberry ,原始Blackberry对象是否会丢失其成员变量? 例如: Blackbery […]

控制反转与dependency injection的区别

IoC和DI概念对我来说非常混乱,所以我阅读了很多观点和不同人的post,最后得出结论。 据我了解这些主题是…… 控制反转是java中用于制作松散耦合且更易于维护的应用程序的技术,并且dependency injection是实现该概念(技术)的方式之一。 控件容器的反转在运行时从java类注入依赖关系以使松散耦合的应用程序。 这是真的 ? 如果我错了,请纠正我

使用私人关键字

我是编程新手。 我现在正在学习Java,有些东西我不太确定,那就是使用私有。 为什么程序员将变量设置为私有,然后将write,getter和setter设置为访问它。 无论如何,为什么不把所有东西都公之于众。 public class BadOO { public int size; public int weight; … } public class ExploitBadOO { public static void main (String [] args) { BadOO b = new BadOO(); b.size = -5; // Legal but bad!! } } 我发现了一些像这样的代码,我看到评论合法但很糟糕。 我不明白为什么,请解释一下。

OO设计建议 – toString

所以我得到了Address类: class Address { private String streetAddress; private int number; private String postalCode; private City city; private State state; private Country country; } 我想让它的可读版本显示在网格列中。 什么是实现这一目标的最佳和最简洁的方法? 类Address内的toString方法( 我个人不喜欢这种方法,因为’toString’与地址没有直接关系 ) class ReadableAddressFormatter ReadableAddressFormatter ( Address addressToFormat ) public String getFormatted() 以前的类,但getFormmated将是静态的,接收Address实例并返回字符串 其他? 建议请。 我正在寻找一个好的设计,专注于清洁代码 , 解耦和可维护性 。

这是循环依赖吗?

这段代码是循环依赖的一个例子吗? package expr; import sheet.Sheet public class AdressExpr implements Expr { private Address address; private Sheet sheet; public double value(Sheet sheet) { return sheet.value(address); } } public interface Expr { public double value(Sheet sheet); } public class Adress { // omissions } package sheet; import expr.Address; import expr.Expr; public class Sheet implements SuperSheet { private […]

在Java中_not_调用超类构造函数的任何方法?

如果我有课: class A { public A() { } } 和另一个 class B extends A { public B() { } } 有没有办法让BB() 不要打AA() ?

Java中的大类分解

我刚刚开始学习Java,并且很好奇Java中是否有良好的对象分解方法? 让我来描述一个问题。 在大型软件项目中,它总是像“核心”或“ui”这样的大类,往往有很多方法,并且打算作为较小类之间的调解者。 例如,如果用户单击某个窗口上的按钮,则此窗口的类会向“ui”类发送消息。 这个’ui’类捕获这个消息,并通过使用应用程序用户界面(通过其中一个成员对象的调用方法)或通过将消息发布到应用程序’core’来执行相应的操作,如果它类似于“退出应用程序”或“启动网络”连接’。 这些对象很难分开,因为它们仅仅是许多小应用程序对象之间的调解器。 但是,如果这样的方法是从一个对象到另一个对象的简单任务委托,那么在具有成百上千种方法的应用程序中使用类就不是很方便。 C#通过允许将类实现分解为多个源文件来解决此类问题:您可以按照您选择的方式划分上帝对象,并且它将起作用。 通过在Java中划分这些对象的任何做法?