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. win7下安装Linux实现双系统全攻略

    http://jingyan.baidu.com/article/c275f6bacc3326e33c756743.html

  2. python基础===类的私有属性(伪私有)

    说在前面的一点: python明明有私有的定义方法就是在变量或者方法的面前加上双下滑线__,这个实际上是python的伪私有.只是一种程序员约定俗称的规定,加了就表示私有变量,但是你如果要在外部调用的 ...

  3. 算法入门系列2:k近邻算法

    用官方的话来说,所谓K近邻算法(k-Nearest Neighbor,KNN),即是给定一个训练数据集,对新的输入实例,在训练数据集中找到与该实例最邻近的K个实例(也就是上面所说的K个邻居), 这K个 ...

  4. 关于HTML,css3自适应屏幕,自适应宽度

    设置了在不同分辨率下,显示的css样式: @media screen and (min-width:1080px){ .box{ width: 1080px;}.content{width: 1040 ...

  5. Linux网络属性配置命令和管理详解

    一.Linux网络属性配置 1.Linux主机接入到网络方式 IP/NETMASK:实现本地网络通信 路由(网关):可以进行跨网络通信 DNS服务器地址:基于主机名的通信,Linux可以有三个DNS地 ...

  6. Django web框架之模板继承

    模板继承 (extend) Django模版引擎中最强大也是最复杂的部分就是模版继承了.模版继承可以让您创建一个基本的“骨架”模版,它包含您站点中的全部元素,并且可以定义能够被子模版覆盖的 block ...

  7. Developer Express控件gridcontrol中gridView的某一个单元格是否可以自由输入

    场景:在Developer Express控件gridcontrol中的gridView中,当医生开的临时医嘱的医嘱类型为"中草药","计价总量"单元格不可以自 ...

  8. IIS 7浏览网站出错,错误编码 http 503 service unable

    由于重新装了Microsoft Visual Studio 2010,结果运行出错,检查发现应用程序池该项目已停止. 解决办法: 1.打开IIS:开始菜单>运行 2.输入“inetmgr”回车 ...

  9. 解决错误:此用户名包含无效字符,请输入有效的用户名。wordpress不能注册中文用户名的问题

    wordpress在默认情况下不支持中文用户名,就是在后台添加用户的时候,如果用户名包含中文,则显示”错误:此用户名包含无效字符,请输入有效的用户名.”如何解决这个问题呢? 不用插件的话就需要修改一个 ...

  10. Java学习笔记(十)——xml

    [前面的话] 学习过程中还是效率不够高,老是容易注意力不集中,着急啊.不能在这样了,要好好学习,好好努力. 学习过程中的小知识点总结,基础知识,选择阅读. [xml定义] 定义:可扩展标记语言(英语: ...