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. 3.0docker操作

    登录镜像资源 docker login daocloud.io username: password: docker login : 登陆到一个Docker镜像仓库,如果未指定镜像仓库地址,默认为官方 ...

  2. Java中class的初始化顺序

     由于Java 中的一切东西都是对象,所以许多活动 变得更加简单,这个问题便是其中的一例. 除非真的需要代码,否则那个文件是不会载入的.通常,我们可认为除非那个类的一个对象构造完毕,  否则代码不会真 ...

  3. C++转换构造函数和隐式转换函数 ~ 转载

    原文地址: C++转换构造函数和隐式转换函数 用转换构造函数可以将一个指定类型的数据转换为类的对象.但是不能反过来将一个类的对象转换为一个其他类型的数据(例如将一个Complex类对象转换成doubl ...

  4. 2017-2018-1 20179205《Linux内核原理与设计》第九周作业

    <Linux内核原理与设计>第九周作业 视频学习及代码分析 一.进程调度时机与进程的切换 不同类型的进程有不同的调度需求,第一种分类:I/O-bound 会频繁的进程I/O,通常会花费很多 ...

  5. 64_g1

    GAPDoc-1.5.1-12.fc26.noarch.rpm 13-Feb-2017 22:37 1082286 GAPDoc-latex-1.5.1-12.fc26.noarch.rpm 13-F ...

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

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

  7. Find Minimum in Rotated Sorted Array I&&II——二分查找的变形

    Find Minimum in Rotated Sorted Array I Suppose a sorted array is rotated at some pivot unknown to yo ...

  8. Python3判断自身脚本是不是在运行

    采用Socket方式,启动时占用一个端口,转化问题为判断端口是不是存在? import sys import locale import http.server import socketserver ...

  9. android studio 入门比较好的书籍

    http://blog.csdn.NET/aqi00/article/details/50012511 http://blog.csdn.net/aqi00/article/details/73065 ...

  10. Linux之父Linus的8个趣闻轶事

    博客中的文章均为 meelo 原创,请务必以链接形式注明本文地址 <只是为了好玩:Linux之父林纳斯自传>是一本很古老的书了,2001年就有了中文版,在2014的时候图灵图书又把它重新翻 ...