Tag: oop

本地类Java的优势

Java中的本地类或使用此function的任何其他语言的优势是什么?

Java方法重载+双重调度

任何人都可以详细解释在我的测试代码段中使用Child实例时调用重载方法print(Parent parent)的原因吗? 这里涉及Java中的任何虚拟方法或方法重载/解析的特征? 有没有直接引用Java Lang Spec? 哪个术语描述了这种行为? 非常感谢。 public class InheritancePlay { public static class Parent { public void doJob(Worker worker) { System.out.println(“this is ” + this.getClass().getName()); worker.print(this); } } public static class Child extends Parent { } public static class Worker { public void print(Parent parent) { System.out.println(“Why this method resolution happens?”); } public […]

不可变类应该是最终的?

它在本文中说: 让一个类成为最终因为它是不可变的是这样做的一个很好的理由。 我对此感到有点困惑……我理解不变性对于线程安全性和简单性的POV来说是一件好事,但似乎这些问题与可扩展性有些正交。 那么,为什么不变性成为最终上课的一个很好的理由呢?

java中的多重inheritance

Java不允许从多个类inheritance(仍允许从多个接口inheritance。),我知道它非常符合经典的钻石问题。 但是我的问题是,当从多个基类inheritance时没有歧义(因此没有钻石问题的机会)时,java不允许像C ++这样的多重inheritance?

用模式替换if else语句

我有一个if else声明可能在不久的将来增长。 public void decide(String someCondition){ if(someCondition.equals(“conditionOne”)){ // someMethod(“someParameter”); }else if(someCondition.equals(“conditionTwo”)){ // someMethod(“anotherParameter”); } . . else{ someMethod(“elseParameter”); } } 因为,这已经看起来很混乱,我认为如果我可以在这里应用任何设计模式会更好。 我查看了策略模式,但我不确定这是否会减少if else条件。 有什么建议么?

Java中的变量命名约定?

在PHP中,我们(至少是优秀的程序员)总是以小写字母开始一般变量名,但是使用大写字母的类变量/对象来区分它们。 以同样的方式,我们用小写字母开始一般文件名,但是包含带大写字母的Classes的文件。 例如: 这些约定在java中是相同的,即以大写字母开头的对象,但是小写的其余部分,或者在我在其他地方阅读时,一切都以小写字母开头?

为什么我们不能在静态方法中使用’this’关键字

class Sub { static int y; public static void foo() { this.y = 10; } } 我知道this表示调用该方法的对象,并且静态方法不绑定到任何对象。 但在上述情况下,变量y也是静态的。 如果我们可以在类对象上调用静态方法,为什么我们不能允许静态方法来设置类的静态变量。 这个附加约束的目的是什么?

是否可以抽象类替换接口?

在Java中,您可以创建仅包含抽象方法的抽象类。 另一方面,您可以创建一个声明相同方法的接口。 既然如此,你可以使用抽象类而不是接口吗?

“创建对象时,无法从静态上下文引用非静态变量”

我编写了下面的代码来测试Java中的类和对象的概念。 public class ShowBike { private class Bicycle { public int gear = 0; public Bicycle(int v) { gear = v; } } public static void main() { Bicycle bike = new Bicycle(5); System.out.println(bike.gear); } } 为什么这会在编译过程中给出以下错误? ShowBike.java:12: non-static variable this cannot be referenced from a static context Bicycle bike = new Bicycle(5); ^

使用Command Design模式

任何人都可以用命令模式的简单例子来解释。 我在互联网上提到但我感到困惑。