黑马程序员——一个面对对象的小实例

原创 2013年12月05日 20:08:28

这两天看张孝祥张老师的视频上面说到这样一个面对对象的小例子:

两块石头磨成一把石刀,石刀可以砍树,砍成木材,木材做成椅子

张老师是用工具类的方式来实现的这句话的,但是我感觉用内部类来也可以来实现这句话,以下是我的实现过程:

 

针对于这几话,我们可以这样来理解:

椅子是由木材而来,木材是由树而来,则椅子是木材的内部类,木材是树的内部类,木材可以做成椅子,则木材中封装了一个方法可以返回椅子的实例对象。那么树这个类的内部大概是这样的:

Class {

       Class 木材{

              做方法(木材)

              {

                     return new 椅子(); 

}

Class  椅子

{

}

}

}

 

然后石刀是由石头而来,则石刀是石头的内部类,石头可以磨成石刀,则石头内部封装了一个方法可以返回 石刀的实例对象。

 

然后我们在所石刀,木材是由石刀砍树而来的,则石刀内部封装了一个砍方法,其参数为树,其返回值类型为木材。

那么石头这个类的内部也明晰了为:

Class 石头{

       磨方法(石头a,石头b{

              return  new 石刀()

}

       Class 石刀

{

       砍方法(树 tree{

              return  tree.new 木材()

}

}

}

一个石头只能磨成一把石刀,一颗树也只能作成一个木材,一个木材只能做成一把椅子所以这这些实例对象要用单例设计模式来实现;

其代码实现如下:

 

 

将石刀、木材、椅子定义为接口,以便我们用来接收内部类实例对象

//石刀接口

public interface StoneKnife {

       public Mateial knif(Tree t);  //内部封装一个砍方法

}

// 木材接口

public interface Mateial{

       public Chair make(Mateial t); // 内部封装一个做方法

}

 

//椅子接口

public interface Chair{

}

 

//石头类

public class Stone {

 

//内部封装一个磨方法返回值为石刀的实例对象

       public  StoneKnife mear(Stone a,Stone b){

              return  Stone_Knife.getValue();

       }

      

       //一个实现石刀接口的内部类,

       public static class Stone_Knife implements StoneKnife{

              //单例设计模式实现 石刀的实例对象

              private Stone_Knife(){}

              private static  final Stone_Knife stoneKnife=new Stone_Knife();

              public static Stone_Knife getValue(){

                     return stoneKnife;

              }

              //砍方法,接收一个树对象返回一个 木材对象

              public Mateial knif(Tree tree){

                     return  Tree.Mateial_.getValue();

              }

       }

 

}

 

//树类

public class Tree {

       //一个实现木材接口的内部类

       public static class Mateial_ implements Mateial{

              //单例设计模式实现 木材的实例对象

              private Mateial_(){}

              private static final Mateial_ m=new Mateial_();

              public static Mateial_ getValue(){

                     return m;

              }

              //实现木材接口的做方法

              public Chair make (Mateial t){

                     return  Chair_.getValue();

              }

              //一个实现椅子接口的内部类的内部类

              public static class Chair_ implements Chair{

                     //单例设计模式实现椅子对象

                     private Chair_(){}

                     private static final Chair_ ch=new Chair_();

                     public static Chair_ getValue(){

                            return ch;

                     }

                    

              }

 

       }

}

面向对象_多态的练习题看程序写结果

/* 看程序写结果:先判断有没有问题,如查没有,就写出结果 多态的成员访问特点: 方法:编译看左边,运行看右边 继承的时候: 子类中有和父类中一样的方法,叫重写。 子类中没有...
  • L1585931143
  • L1585931143
  • 2016年10月07日 13:34
  • 429

面对对象和面对过程的理解

1、面向过程 就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了,程序从main()函数起运行,调用一个个其它函数。  也就是说,面向过程是由函数堆积...
  • qq_30716173
  • qq_30716173
  • 2015年10月17日 10:50
  • 871

JAVA初学:关于“面对对象”的一些理解与感悟

如何理解JAVA面对对象的思想
  • Deadline_1
  • Deadline_1
  • 2016年05月18日 16:01
  • 939

面对对象的语言的三大特征

1:封装          封装是 JAVA 面向对象的特点的表现,封装是一种信息隐蔽技术。 它有两个含义:即把对象的全部属性和全部服务结合在一起, 形成一个不可分割的独立单位; 以及尽可能隐藏对象...
  • tfygg
  • tfygg
  • 2014年02月21日 15:45
  • 1690

js面对对象编程

说到js,很大一部分人会说我很熟悉,在日常的web开发中经常用,那么你的js代码是符合面对对象思路的吗?那你会问我面向过程的js代码有什么不好吗?我的感受是面对对象的js编码更加简洁,减少了混乱,可维...
  • xqf309
  • xqf309
  • 2014年06月29日 21:15
  • 2182

JAVA面对对象

141.     局部变量、成员变量、静态变量分别怎么声明? 
 局部变量和成员变量的作用域有局限性,一般都要看花括号来进行判断。而全局变量一般作用于整个类。静态变量的声明是 static 142...
  • jolivan
  • jolivan
  • 2017年05月01日 15:25
  • 398

自学Python day6--------面向对象编程(类和实例)

自学Python day6——–面向对象编程(类和实例)1.类和实例 面向对象最重要的概念就是类(Class)和实例(Instance),必须牢记类是抽象的模板,比如Student类,而实例是根据类...
  • hident
  • hident
  • 2017年02月25日 15:00
  • 242

面向对象的单片机编程

1.在看别人单片机程序时,你也许是奔溃的,因为全局变量满天飞,不知道哪个在哪用了,哪个表示什么,而且编写极其不规范。 2.在自己写单片机程序时,也许你也是奔溃的,总感觉重新开启一个项目,之前的写过相似...
  • black_yu
  • black_yu
  • 2017年01月06日 23:54
  • 883

python学习(3):python中的面向对象思想,类和对象

Python中的类和对象和java中的类和对象用法大部分是一样的,只是语法的差别 闲话少说,下面的代码是类的定义,类中成员和方法的定义,以及继承的使用 ''' 类的使用 ''' cla...
  • qq_32166627
  • qq_32166627
  • 2017年03月02日 21:50
  • 323

黑马程序员_Java面对对象——异常

------- android培训、java培训、期待与您交流! ---------- ------- android培训、java培训、期待与您交流! ----------...
  • gezi_itheima
  • gezi_itheima
  • 2014年05月13日 20:35
  • 259
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:黑马程序员——一个面对对象的小实例
举报原因:
原因补充:

(最多只允许输入30个字)