1.1抽象过程

1)万物皆对象。

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

3)每个对象都有自己的由其他对象所构成的存储。

4)每个对象都拥有其类型。

5)某一特定类型的所有对象都可以接收同样的消息。

上面是书上总结的内容,具体代码如下:

//每个对象都有一个接口,接口有对象相关的功能和数据
public class Light {
public void on() {
System.out.println("开灯");
}
public void off() {
System.out.println("关灯");
}
public void brighten() {
System.out.println("调亮");
}
public void dim() {
System.out.println("调暗");
}
}

1.6继承

对象这种观念,本身是十分方便的工具,通过概念可以将数据和功能封装到一起。这些概念用关键词class来表示,它们形成了编程语言中的基本单位。

引出问题:创建一个类之后,即使另一个新类与其具有相似的功能,还得重新创建一个新类。

类型不仅仅只是描述了作用与对象集合上的约束条件,同时还有与其他类型之间的关系。继承使用基类型和导出类型的概念表示了这种类型之间的相似性。一个基类型包含其所有导出类型所共享的特性和行为。可以创建一个基础类型来表示系统中某些对象的核心概念,从基类型中导出其它类型,来表示此核心可以被实现的各种不同方式。

上面是书上总结的内容,具体代码如下:

/**
* 几何图形
* @author Administrator
*
*/
public class Shape { private String color;
public void draw() {
System.out.println("几何图形尺寸");
}
public void erase() {
System.out.println("几何图形擦除");
}
public void move() {
System.out.println("几何图形移动");
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
} }
/**
* 圆形
* @author Administrator
*
*/
public class Circle extends Shape { @Override
public void draw() {
System.out.println("圆形尺寸");
} @Override
public void erase() {
System.out.println("圆形擦除");
} }
/**
* 正方形
* @author Administrator
*
*/
public class Square extends Shape { @Override
public void draw() {
System.out.println("正方形尺寸");
} @Override
public void erase() {
System.out.println("正方形擦除");
} }
/**
* 三角形
* @author Administrator
*
*/
public class Triangle extends Shape { @Override
public void draw() {
System.out.println("三角形尺寸");
} @Override
public void erase() {
System.out.println("三角形擦除");
} public void filpVertical() { }
}

1.7伴随多态的可互换对象

在处理类型的层次结构时,经常想把一个对象不当作他所属的特定类型来对待,而是将其当作其基类的对象来对待。

上面是书上总结的内容,具体代码如下:


public class ShapeTest {
  @Test
  public void test1() {
    Shape shape = new Shape();
    Shape circle = new Circle();
    Square square = new Square();
    Triangle triangle = new Triangle();
    doSomething(shape);
    doSomething(circle);
    doSomething(square);
    doSomething(triangle);
  }
  
  public void doSomething(Shape shape){
    shape.draw();
    shape.move();
  }
/* 几何图形尺寸
几何图形移动
圆形尺寸
几何图形移动
正方形尺寸
几何图形移动
三角形尺寸
几何图形移动 */
}

面向对象编程有三大特性:封装、继承、多态。

参考资料:Java编程思想(四)

Java编程思想学习(一)----对象导论中多态的理解的更多相关文章

  1. [Java编程思想] 第一章 对象导论

    第一章 对象导论 "我们之所以将自然界分解,组织成各种概念,并按其含义分类,主要是因为我们是整个口语交流社会共同遵守的协定的参与者,这个协定以语言的形式固定下来--除非赞成这个协定中规定的有 ...

  2. 学习java编程思想 第一章 对象导论

    一.面向对象的五个基本特性: 1.万物皆为对象.将对象视为奇特的变量,他可以存储数据,还可以要求它在自身上执行操作. 2.程序是对象的合集,他们通过发送消息告诉彼此所要做的. 3.每个对象都有自己的由 ...

  3. JAVA编程思想第一章——对象导论

  4. Java编程思想学习笔记_2(继承和多态)

    静态初始化: 静态初始化只在必要的时刻进行.(即当程序需要加载类进入内存的时候,执行静态初始化.静态变量和静态代码块的初始化顺序,按照在代码中声明的顺序老执行.例如:如果要执行某个public类,那么 ...

  5. [Java编程思想-学习笔记]第3章 操作符

    3.1  更简单的打印语句 学习编程语言的通许遇到的第一个程序无非打印"Hello, world"了,然而在Java中要写成 System.out.println("He ...

  6. Java编程思想学习(八) 内部类

    可以将一个类的定义放在另一个类的定义内部,这就是内部类. 内部类的定义是简单的,但是它的语法确实很是复杂,让人不是很好理解.下面就内部类做一个小结. 一.内部类的分类 总的来讲内部类分为普通内部类,匿 ...

  7. java编程思想--学习心得

    学习Java编程思想,需要了解语言特性,对于各种名词,能够借助项目代码,解释其含义,不借助搜索工具,明白其在什么样场景下使用,会带来什么样的问题,能否避免这类问题. 学习的过程,与软件开发相同,一样是 ...

  8. Java编程思想 学习笔记1

    一.对象导论 1.抽象过程 Alan Kay曾经总结了第一个成功的面向对象语言.同时也是Java所基于的语言之一的Smalltalk的五个基本特性,这些特性表现了纯粹的面向对象程序设计方式 1)万物皆 ...

  9. Java编程思想学习(五)----第5章:初始化与清理

    随着计算机革命的发展,“不安全”的编程方式已逐渐成为编程代价高昂的主因之一. C++引入了构造嚣(constructor)的概念,这是一个在创建对象时被自动调用的特殊方法.Java中也采用了构造器,并 ...

随机推荐

  1. python 实现二叉树相关算法

    一.构建与遍历二叉树 基本性质 1)在二叉树的第i层上最多有2i-1 个节点 .(i>=1)2)二叉树中如果深度为k,那么最多有2k-1个节点.(k>=1)3)在完全二叉树中,具有n个节点 ...

  2. MFC不同工程(解决方案)之间对话框资源的复制与重用方法(转)

    原文转自 https://blog.csdn.net/lihui126/article/details/45556687

  3. Linux 入门记录:十六、Linux 多命令协作:管道及重定向

    一.多命令协作 在 Linux 系统当中,大多数命令都很简单,很少出现复杂功能的命令,每个命令往往只实现一个或多个很简单的功能.通过将不同功能的命令组合一起使用,可以实现某个复杂功能的. Linux ...

  4. Qualcomm platform, the commonly used parameters of charger and battery in device tree file

    Platform MSM8917 PM8937 PMI8940 Parameters 1 battery charging voltage : qcom,float-voltage-mv = < ...

  5. python实战===用python识别图片中的中文

    需要安装的模块 PIL pytesseract 需要下载的工具: http://download.csdn.net/download/bo_mask/10196285 因为之前百度云的链接总失效,所以 ...

  6. JS中Unix时间戳转换日期格式

    <!doctype html> <html> <head> <title>Unix时间戳转换成日期格式</title> <script ...

  7. javascript方法--call()

    关于call方法,以前经常看到这个方法,但是也没怎么用心去学习,后来觉得不行,所以知识在一点一点补~ 今天对自己学习call方法做一下总结 其实,学了call方法,会发现call跟apply其实是很像 ...

  8. 取消div,a等标签点击效果

    当标签被设置onclick事件之后,在有些手机浏览器中,点击这些标签,会有点击变色效果.想要取消点击变色效果. 添加:div{-webkit-tap-highlight-color:rgba(0,0, ...

  9. ubuntu下ssh服务相关操作

    1.安装ssh服务:apt-get install openssh-server 2.检测ssh开启状态:ps -e | grep ssh 3.启动ssh:/etc/init.d/ssh start ...

  10. selenium+python自动化78-autoit参数化与批量上传【转载】

    转至博客:上海-悠悠 前言前一篇autoit实现文件上传打包成.exe可执行文件后,每次只能传固定的那个图片,我们实际测试时候希望传不同的图片.这样每次调用的时候,在命令行里面加一个文件路径的参数就行 ...