Tag: oop

面向对象和基于对象的语言之间的核心差异

我想知道两者之间的核心区别 面向对象和基于对象的语言 我看了很多post,所有人都说了两件事 面向对象语言支持OOP的所有function,而基于对象的语言不支持多态性和inheritance等OOP的所有function。 他们给出了javascript作为基于对象和java作为面向对象的示例 喜欢这篇stackoverflow的post 面向对象和基于对象的语言之间的差异 但我想知道这两个概念之间的核心区别是什么,无论使用何种语言。 得到了答案 终于搞定了 感谢Matías Fidemraizer 答案不依赖于任何语言,不依赖于任何特征,我所嘲笑的核心差异是 本身包含对象的语言称为基于对象的语言,具有以下面向对象概念的语言称为面向对象语言

实现具有相同方法的多个接口

这段代码完美无缺。 方法test()适用于两个接口。 引擎盖下究竟发生了什么? 这个function在实际场景中有用吗? interface A { void test(); } interface B { void test(); } class C implements A, B { public void test() { System.out.println(“abc”); } } A a = new C(); a.test(); B b = new C(); b.test();

有没有办法确定类是Java的实例的类型?

假设我有3个类,如下所示: class A {} class B extends A {} class C extends A {} 那么可以确定特定对象是A , B还是C的实例? 我认为这样的事情可能有用: if (myObject.getClass().isInstance(B.class)) { // do something for B } else (myObject.getClass().isInstance(C.class)) { // do something for C } else { // do something for A } 但是在阅读了一下之后,我认为它总是会评估为B,因为它只是测试一个演员是否有效并且它们之间没有实质性差异。

为什么StringBuffer / StringBuilder不会覆盖equals或hashCode?

为什么StringBuffer / StringBuilder不会覆盖对象的equals() , hashcode()方法? 请建议我清楚的图片,以帮助理解问题…

对没有使用过它们的人定义“类”和“对象”这两个词的最佳方法是什么?

我的邻居正在参加“Java简介”,并请我帮助解释一些第一天的概念。 我意识到,因为我每天都这样做,所以我没有初学者的想法,而且从头开始很难将这些东西联系起来。 对我来说,实际上并非无足轻重的解释是“什么是一个阶级?” 我到目前为止最好的: 变量包含某种数据; 一个变量可能是名字,另一个变量可能是你的体重(磅)。 方法是一个函数,它做的东西,并且可以用这些变量做事。 一种方法可能会在屏幕上显示您的名字,或者告诉您,为了获得良好的BMI比率,您应该减掉多少体重。 对象包含变量和方法; 一个对象可能代表你,第二个对象可能代表我。 类是描述每个对象中的方法和变量的蓝图或模板。 对象是实例化的(一个实例)类; 一个对象就是某种东西,而这个类只是制作这个东西的计划。 继续这个例子,我们有一个Person对象,它被实例化以保存Alice的数据,另一个Person对象被实例化以保存Bob的数据,另一个用于Carol,依此类推。 我如何调整这个例子以使其更有意义,和/或什么是更好的方法? “实例化”这个词在这一点上感觉太重了。 (我认为这是一个有用的问题,但显然是主观的;标记为社区维基。)

尽可能晚地或在它们所属的最近的大括号中声明局部变量?

我正在为我的组织设定一些编程实践标准。 这样做我遇到了问题“这个问题的标题” 有些人认为最好尽可能晚地声明变量,有些人发现将它们放在方法起始大括号的顶部是好的。 Oracle Standard也表示要尽早声明它们。 所以我赞成在他们所属的最接近的大括号上声明它们。 令人担忧的是 代码可读性 性能 减少错误 欢迎任何评论。

无法声明私有的抽象方法

我想这样做,但我做不到。 这是我的情景和理性。 我有一个测试用例的抽象类,它有一个名为test()的抽象方法。 test()方法由子类定义; 它是用某个应用程序的逻辑实现的,例如CRMAppTestCase extends CompanyTestCase 。 我不希望直接调用test()方法,我希望超类调用test()方法,而子类可以调用一个调用它的方法(并且还做其他工作,比如设置当前例如,在执行测试之前的日期时间)。 示例代码: public abstract class CompanyTestCase { //I wish this would compile, but it cannot be declared private private abstract void test(); public TestCaseResult performTest() { //do some work which must be done and should be invoked whenever //this method is called (it would be improper to […]

原始类型。 应参数化对generics类型的引用

我有一个Cage类: public class Cage { // the construtor takes in an integer as an explicit parameter … } 我试图在另一个类main方法中实例化Cage的对象: private Cage cage5 = new Cage(5); 我收到错误:Cage是一种原始类型。 应参数化对generics类型Cage的引用。 我尝试了几个想法,但我对这种棘手的语法感到困惑:o(

如果哈希表中的键是一个类对象,那么containsKey是如何工作的?

当我们在哈希表中放置一个类Object(有三个数据成员)时,如何防止将另一个条目放入其密钥具有相同三个数据成员的哈希表中? 我猜这将是一个新的对象。 因此,即使存在与等待插入的数据成员具有相同数据成员的键(此类对象),hashtable.containsKey()也将返回false。 更清楚:我有一个类似的课程 class Triplet { private Curr curr; private Prev prev; private Next next; } 我有一个哈希表结构,如: Hashtable table = new Hashtable(); 当我做: if(!table.containsKey(triplet_to_inserted)) table.put(triplet, new Integer(0)); 即使表中包含已具有相同数据成员的三元组,这是否会插入副本? 即:triplet_to_be_inserted.curr,triplet_to_be_inserted.next和triplet_to_be_inserted.prev如果是,如何防止这种情况? 此外,对于要插入的任何条目,containsKey()是否会返回true? 如何解决这个问题? 谢谢。

如何在运行时获取方法的JavaDoc?

在运行时很容易获得一个Class a method Name 但 我如何在运行时获取方法的JavaDoc ? 如下例所示 我们的类包含我们的目标方法的JavaDoc public class MyClass { /** * * @param x value of …. * @return result of …. */ public String myMethod(int x) { return “any value”; } } 我们的类有一个主要方法 public class TestJava { public static void main(String[] args) { // get Class method Name at run […]