zoukankan      html  css  js  c++  java
  • <Java><类与对象><OOP>

    Overview

    • 封装(encapsulation): 也称为数据隐藏。从形式上看,是将数据与行为组合起来,并对对象的使用者隐藏了数据的实现方式。封装给对象赋予了黑盒特征,提高重用性和可靠性
    • 继承:扩展已有类来方便的定义一个新的类。子类具有父类的全部属性和方法。

    对象

    • 对象的三个特性:
      1. 对象的行为:可以对对象施加的操作
      2. 对象的状态:每个对象都保存着描述当前特征的信息,状态可能会因为方法调用而改变。
      3. 对象标识:唯一标识一个对象的方式(identity)。

    Eg

    • 一个破坏封装性的例子
    • class Employee{
        private Date hireDay;
        public Date getHireDay(){
         return hireDay;
        }           
        ....  
      }
      

      上面这个例子中,返回的是Date的引用,那么在外层调用Date d = getHireDay();那么对d的改变实际上就是对私有变量hireDay的改变。因此,要返回一个可变对象的引用,应该首先对它进行克隆。

    静态域与静态方法

    静态常量

    • 比静态变量用的多,比如Math中定义PI, System.out常量
    • public static final double PI = 3.14....;

    静态方法

    • 是一种不能对对象实施操作的方法。

    工厂方法

    • 静态方法的一种常见用途
    • eg:NumberFormat类使用工厂方法产生不同风格的对象
    • NumberFormat currencyFormat = NumberFormat.getCurrencyInstance();
      NumberFormat percentFormat = NumberFormat.getPercentInstance();
      double x = 0.1;
      System.out.print(percentFormat.format(x) + "  " + currencyFormat.format(x));
    • 这里你可能想问为什么不利用构造器完成这些操作呢?注意原因有两个:
      1. 无法命名构造器。
      2. 当使用构造器时,无法改变所构造的对象类型。

    类设计技巧

    • 一定要保证数据私有--> 即绝对不要破坏封装性
    • 一定要对数据初始化,而不应该依赖系统默认值。
    • 不要在类中使用过多的基本类型,也即用其他的类代替多个相关的基本类型的使用。
    • 将职责过多的类进行分解。
    • 类名和方法名要能够体现他们的职责。
    满地都是六便士,她却抬头看见了月亮。
  • 相关阅读:
    iOS 单例(Singleton)总结 和第三库引用单例
    iOS OpenURL用法简介
    CGContextRef学习笔记
    iOS 绘图(虚线、椭圆)
    iPhone4s 7.0.3-4 TableView 数据越界 解决方案
    Android Media应用开发
    RTMP & HLS
    Debug tool 学习笔记
    video codec 学习笔记
    matplotlib和numpy 学习笔记
  • 原文地址:https://www.cnblogs.com/wttttt/p/6857765.html
Copyright © 2011-2022 走看看