Tag: oop

Java覆盖如何工作

我有一个愚蠢的混淆,当我们覆盖父类方法然后这个派生的重写方法仍然保持父类方法的代码,或者它是一个我们可以定义的新方法?

Java面向对象设计:在java中返回多个对象

Java中的以下代码抛出Null指针exception。 public class New{ int i; New(int i) { this.i = i; } public void func(New temp) { temp.i = 10; temp = new New(20); } public static void main(String[] args) { New n = null; n.func(n); System.out.println(“value “+ ni); } } 原因是,java通过值传递对象引用。 如果我想返回一个对象,那么我可以从函数返回它。 但是,如果我有多个对象,我可以返回对象引用的唯一方法是将它们保存到另一个对象中,就像让一些容器引用所有对象一样。 有没有更好的方法呢? 在C ++中,我通常只传递指针的地址来处理这种情况。 如果我只想返回一个类型的两个对象,创建一个容器并传递它就是一个过度杀戮。 从函数返回多个对象有什么问题? 为什么不能改变所有这些语言中函数的语义?

面向对象的代码,采用非面向对象的语言

这句话是真的吗? 编写面向对象的代码,即使是非面向对象的语言。 任何人都可以举个例子..或提供一些链接……

Android,Web Services,AsyncTask请帮助一个菜鸟/确保我正确的开始

自从orignal post我做了一个连接到JSON API的Android应用程序后,我做了编辑 。 到目前为止一切正常,除非服务器有延迟。 如果需要太长时间,UI当然可以停止响应。 我读过asynctask可以解决我的问题。 不过,我对这些例子非常热心。 这是进行http调用的restclient类…解析json并将自定义对象存储到我的其他类可以访问的公共列表中。 package com.bde.dgcr; import android.app.Activity; import android.content.Context; import android.os.AsyncTask; import android.util.Log; import android.view.View; import android.widget.ListView; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.DefaultHttpClient; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.List; public class […]

get和set方法有什么意义

在我的CS课程中,我只是学习课程和OOP。 因此,当您创建一个类时,您会初始化一定数量的私有变量。 我知道你把它们变成私有的,因为如果它们是公开的,它们很容易改变,并且可能导致很多错误。 所以我们使用get和set方法来改变变量。 但这又一次使变量很容易改变吗? 那么最初是将它们变为私有的呢?

可以使用成分而不是inheritance来实现Polymorphysim吗? (在Java中)

我正在学习Java,我知道什么是inheritance和组合,我看到了很多使用inheritance的polymorphysim示例,所以我的第一个问题是,可以使用组合完成同样的工作吗? 如果是,请用一个小例子来展示。 我的第二个问题是,可以说,polymorpysim基本上是方法重载和/或方法覆盖吗? 如果是的话,为什么呢?

单例模式的示例

请给我一个单例模式的实时示例。 访问共享文件的不同线程是单身还是不单独? 由于每个线程访问文件的同一个实例而不是自己的单个实例。

在正确的OO设计之后使用另一个对象的function – 封装

我正在讨论正确的OO设计,以便从java类中使用另一个对象的function(方法),而两个对象尽可能保持解耦。 例如,在我的类中的某个时刻,为了实现我的逻辑,我需要调用一个属于另一个对象的方法,比如一个帮助类。 这个帮助器类不需要以任何方式与我的原始类相关,它只是有一个特定的方法,可供我的类使用。 在实现逻辑之后,不需要帮助方法(或辅助对象)。 显然,我需要引用这个辅助对象才能使用它的方法。 但是为了强制封装,我不应该在我的原始类中声明一个实例变量来引用这个帮助器对象? 这种推理是否正确? 此外,帮助程序类不知道可能使用它的任何客户端类。 在这种情况下,局部变量是否更合适? 在方法中声明并实例化helper对象,它将使用它的function? 原始类中最好的位置在哪里声明并实例化这样的辅助对象? 我想知道是否有一个高级示例,或者是否在OO文章中对此进行了详细阐述。 我很欣赏任何以封装为中心的输入或提示。

Factory方法更适合图书馆的框架和抽象工具吗?

Abstract Factory和Factory方法模式都是创建设计模式,它解决了不同场景下的对象创建问题。 根据GOF 工厂方法模式 定义用于创建对象的接口,但让子类决定实例化哪个类。 Factory方法允许类将实例化延迟到子类。 我的理解: 客户端的动机是获得一个存在于基础工厂类中的方法得到执行,这取决于现在不知道具体类的对象(在这种情况下,无论是在向客户提供软件期间,它都将是定义,或者客户自己编写具体实现,最有可能是框架)。 未知(或可能更改)的产品提供了一种抽象类型:IProduct,并设置一个合同,以后在产品的任何实现中都必须实现此接口。 IProduct接口 package com.companyx; public interface IProduct { public void serve(); } 带有’a method’的工厂类需要执行 package com.companyx; public abstract class Factory { public abstract IProduct createProduct(); private void performCriticalJob(){ IProduct product = createProduct(); product.serve(); } public void executeJob(){ //some code performCriticalJob(); //some more code } } 一些具体的产品 package […]

这是将Java接口转换为Scala的正确方法吗?

我开始学习Scala,我将做一个简单的交叉编译器。 我会支持一些像print这样的指令。 注意:代码片段未经过测试或编译。 这是我在JAVA中要做的。 public interface Compiler{ String getPrintInstruction(); } public class JavaCompiler implements Compiler{ public String getPrintInstruction(){ return “System.out.print(arg0);” } } public class ScalaCompiler implements Compiler{ public String getPrintInstruction(){ return “print(arg0);” } } 片段下面是正确的“Scala方式 ”吗? trait Compiler { var printInstruction: String } class JavaCompiler extends Compiler { var printInstruction = “System.out.print(arg0);” } class ScalaCompiler […]