zoukankan      html  css  js  c++  java
  • 浅谈《think in java》:一 对象导论总结

    清单1. 抽象机制,面向对象程序设计方式

        java所基于Smalltalk的特性表现一种纯粹的面向对象设计方式:

           万物都是对象

           程序是对象的集合(容器),他们通过发送消息(发送请求)来告知彼此所要做的。

           每个对象有自己有其他对象所构成的储存(java中的所有基类是Object)

           每个对象都拥有类型type

           某一个特定类型所欲哦对象都可以接收同样的消息。

    清单2.对象提供服务,被隐藏的具体实现

        

      Light  

      on()

      off()

        对象Light

      —> 接口

       

    Light light = new Light();
    light.on();

            这里,Light对象就像服务者提供了服务(接口):on(),off()

          服务中,只给客户端程序员接口,因为里面还有类创建者的隐藏代码:

             1> 类创建者任意调试修改隐藏代码,对该类服务无影响。(安全性)

             2> 隐藏代码通常是对象内部脆弱部分,隐藏后减少程序的bug。

    清单3.复用--组合,聚合(has-a)

                 

        现有类  —>  (合成新类时)组合      —>  (组合动态发生)聚合

                    |组合存在着 “拥有关系”

    清单4.继承,多态,范型,容器,参数化

        

        继承:基类表示系统中某些对象的核心概念,而导出类是具体实现。bruce说过:对于使用面向对象设计的人们来说,困难之处是从开始到结束过于简单。(满怀信心)

        继承例子不说了,下面讨论下

        多态:

    package sedion.li.test;
    
    public class Shape {
        public void show(){
            System.out.println("shape");
        }
        public static  void doSomthing(Shape shape){
            shape.show();
        }
        public static void main(String[] args) {
            Circle circle = new Circle();
            doSomthing(circle);
        }
    }
    class Circle extends Shape{
        public void  show() {
            System.out.println("circle");
        }
    }

        

        Def:向上转型

          通俗地讲即是将子类对象转为父类对象。此处父类对象可以是接口。

        doSomething 可以发给Shape的任何消息,Circle都可以接收到。所以这里会打印出     circle

        容器:只是辅助工具类对象的集合。

        范型(参数化): 

          “一对尖括号,中间包含类型信息”

      

    ArrayList<Shape> shapes = new ArrayList<Shape>();
    

        

    清单5:对象创建及生命周期

        java中,

          在被称为堆的内存池中创建对象(new)。java完全采用了动态内存分配方式。

        生命周期,不得不提到java的“垃圾回收器”机制:

          自动发现对象不再被使用,并继销毁。(提供了更高层的保障,避免内存泄漏)。

        

  • 相关阅读:
    Java基础知识点总结(四)
    Java基础知识点总结(三)
    用easyui实现查询条件的后端传递并自动刷新表格的两种方法
    在JDBC中实现SQL语句的模糊查询
    向DataGrid数据表格增加查询搜索框
    Java基础知识点总结(二)
    easyui中formatter的用法
    腾讯云+阿里云 搭建hadoop + hbase
    -- 记录 -- 问题记录
    -- 1 -- springboot
  • 原文地址:https://www.cnblogs.com/Alandre/p/3453010.html
Copyright © 2011-2022 走看看