佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 1348|回复: 9

interface class 问题 ~~~ 请帮帮忙 ~~~

[复制链接]
发表于 31-12-2010 06:54 PM | 显示全部楼层 |阅读模式
本帖最后由 lkming 于 1-1-2011 11:06 AM 编辑

在下小弟 ,不是很明白 object oriented programming 方式~~~

object oriented programming 里的 interface abstract class 是有什么作用呢 ~~~ 我已经查过相关的质料,但是全部都解释的很迷糊~~~
××
以下的是我的学习到的
,如果是错的话
,可以指点下小弟我吗??××




以我所知道的interface 是将所有的 class 规律化 比如 declare 了很多 class ,然后将它们分类 ,当 run debug 时,就只会 debug interface 里的 class ,而其他的 class 就不会 debug , 比如

public interface interfaceClass{
public void setValue(String value);
public String getValue();                    //
run 这两个 class ,其他的就不会 run
}   

public class testClassA implements interfaceClass{

private String valueA = "hello";

public void setValue(String value){
  this.valueA = value ;
}

public String getValue(){
  return this.valueA;
}


public String returnOtherValue(){
return "welcome to here";
}
}


public static void main(String[] args) {
      
        
testClassA classA = new testClassA ();

        System.out.println(classA.getValue());
        
        System.out.println(classA.
returnOtherValue());

        classA.setValue("123456");

        System.out.println(classA.getValue());
        
    }



但是有一点很奇怪的是 ,当我 call countValue() class ,还是可以 call 到的 ???




我所学到 ,不懂对不对,希望个位指点下小弟 ~~ 和什么网站可以介绍给小弟我 ~~ 因为我所找到的都很迷糊 ~~ 没有解释的很清楚 ~~ 只是教如何 declare interface

回复

使用道具 举报


ADVERTISEMENT

发表于 31-12-2010 07:23 PM | 显示全部楼层
本帖最后由 jasonmun 于 31-12-2010 09:58 PM 编辑

1.
http://blog.csdn.net/b271737818/archive/2009/03/02/3950245.aspx

2. 连return type 都搞错..
public interface interfaceClass{
public String setValue(String value);
public void getValue();                    // 只 run 这两个 class ,其他的就不会 run
}  

3. 怎样create instance, 怎样用? 也写出来..

* 把主题写清楚.. 不要为了方便自己, 而懒惰想和写出来..
否则以后一概不会回复你的贴..
回复

使用道具 举报

发表于 31-12-2010 09:59 PM | 显示全部楼层
public void getValue();

这个不会 return data
回复

使用道具 举报

 楼主| 发表于 1-1-2011 12:36 AM | 显示全部楼层
本帖最后由 lkming 于 1-1-2011 12:40 AM 编辑
1.


2. 连return type 都搞错..
public interface interfaceClass{
public String setValue(String v ...
jasonmun 发表于 31-12-2010 07:23 PM



public void getValue();

这个不会 return data
宅男-兜着走 发表于 31-12-2010 09:59 PM



很抱歉,我打错了 , 调转位置了

jasonmun : 你所讲的 instance 是不是这样 ?? 还有这不是 object oriented  programming  的问题吗 ??

很抱歉 ,我真的很有诚意的 ,可能我的表达方式有问题 ,在这里跟你说声 , 抱歉
回复

使用道具 举报

发表于 1-1-2011 08:56 AM | 显示全部楼层
1. OOP / interface 哪个keyword 作主题最好呢?

2. 如我所料..
以下这2个有什么区别.. 自己想想.. 做功课..
testClassA classA = new testClassA ();
interfaceClass classA = new testClassA ();
回复

使用道具 举报

发表于 1-1-2011 09:00 AM | 显示全部楼层
本帖最后由 chrizyuen2 于 1-1-2011 09:16 AM 编辑

class.有为什么加上interface?
1) 帮助的design/prototyping.
interface的作用在于把规范,协议这些东西作为first-class的类型使用。它唯一的作用就是帮你解耦。
把“类型”和“类”分开来看待。
interface的最大作用,不在于可以给“类”提供什么东西,而是在于可以让你忘掉“类”,忘掉实现,直接面对规范,协议。



2) 方便TDD-Mock
使用 interface 的好处是一旦你使用接口设计好了概念模型,你就可以很快根据这个概念模型构造一个比较完善的测试环境,而概念模型只需要再充实一点点,那么一整套完善的开发体系就建立起来了。这个完善的开发体系可以伴随整个的开发过程,实现较为理想的增量式开发,对开发质量的保障不言而喻。

3)简化系统复杂度
一个系统需要多个视图可以理解,毕竟它的复杂度摆在那里,但一个类都要搞那么多视图,岂不是要做一个超复杂的类?万能类还不如没有类。
oo的基本思想是什么?是责任分割和封装,这不会有人反对吧?这就是说我们在设计的时候,应该定义好系统中每个对象的责任以及彼此间的协作方式或者说消息。而描述这些消息上就是interface的职责所在,这种抽象对分析是有好处的,不用过多的考虑实现的细节就可以快速的搭出一个框架。
所以说接口的出现并不仅仅是为了在技术上(编程)的作用,更大的程度是分析和设计所用的工具。因为它很轻便,当你认定你在做接口的时候,考虑的仅仅是协作所用的消息,但当你认定你做的是类的时候,考虑的就应当是消息处理的实现。


4)简化翻新class/支持backward-compatible
只需要改类,不需要改接口(interface).
回复

使用道具 举报

Follow Us
 楼主| 发表于 1-1-2011 11:10 AM | 显示全部楼层
本帖最后由 lkming 于 1-1-2011 11:26 AM 编辑
1. OOP / interface 哪个keyword 作主题最好呢?

2. 如我所料..
以下这2个有什么区别.. 自己想想.. 做功 ...
jasonmun 发表于 1-1-2011 08:56 AM

class.有为什么加上interface?
1) 帮助的design/prototyping.
interface的作用在于把规范,协议这些东西作 ...
chrizyuen2 发表于 1-1-2011 09:00 AM



谢谢两位的教导 ,终于搞清楚了 interface class ,真是感激两位的教导 ~~~


还有一个问题是 ,如果没有用 extends [inheritance] 的话 ,全部放在一个 class 里 ,是不是不逻辑 ???
回复

使用道具 举报

发表于 1-1-2011 11:31 AM | 显示全部楼层
本帖最后由 chrizyuen2 于 1-1-2011 11:32 AM 编辑

回复 7# lkming

programming实在没有对错。所有东西放在一个class的年代,我们也经历过。
而且发展成为windows 3.1 API/vb6 标准。
如果, 你要求减少开发/维持难度和高度磨合(high integration) ,
我建议你可以放在一起,然后才做refactoring比较好
回复

使用道具 举报


ADVERTISEMENT

 楼主| 发表于 1-1-2011 03:41 PM | 显示全部楼层
回复 8# chrizyuen2


    谢谢你 ,真是很感激你 ~~~
回复

使用道具 举报

发表于 10-1-2011 01:57 PM | 显示全部楼层
比如 :

//Person interface....common person attributes
interface IPerson
{
       string name {get;set;}
       string sex {get;set;}
       string addr {get;set;}
       string phone {get;set;}
       string email {get;set;}
}

分类的确CLASS

//Concrete class implement IPerson
//Student

class Student: IPerson
{
      public string name {get;set;}
      public string sex {get;set;}
      public string addr {get;set;}
      public string phone {get;set;}
      public string email {get;set;}

      //student related stuff..
       public string school {get;set;}   
      
}

//Concrete class implement IPerson
//Student
class Employee: IPerson
{
      public string name {get;set;}
      public string sex {get;set;}
      public string addr {get;set;}
      public string phone {get;set;}
      public string email {get;set;}

      //employee related stuff..
       public string company {get;set;}   
      
}

//manager class
class PersonFactory
{
      public static IPerson CreatePerson(string type)
     {
                if (type == "student")
                    return new Student();

                if (type == "employee")
                    return new Employee();

     }
}

//应用

IPerson bob =  PersonFactory.CreatePerson("person");

bob.name ="bob";
...

IPerson bill =  PersonFactory.CreatePerson("employee");
  
bill.name ="bill gate";
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 17-11-2025 02:56 AM , Processed in 0.163875 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表