今天开始java编程思想的导读,希望自己能更好的理解程序。全书1461页,恐怖,尽量一天看十页八。

OOP 面向对象程序设计

记录一点东西八

第一个小课程,抽象过程

看看概念

1万物皆为对象

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

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

4每个对象都拥有此类型

5某一特定类型的对象可以接受同样的消息

话不多说,我们写一个简单的小例子八,打开我的eclipse程序,我们讲讲抽象类八,

可能也是抽象的一个代表了

一、概述

当父类知道子类应该包含什么样的方法,但无法确定子类如何实现这些方法;在分析事物时,会发现事物的共性,将共性抽取出,实现的时候,就会有这样的情况:方法功能声明相同,但方法功能主体不同,这时,将方法声明抽取出,那么,此方法就是一个抽象方法。

1、抽象的定义格式

抽象方法的定义格式:public abstract 返回值类型 方法名(参数);
    抽象类的定义格式:abstract class 类名{}

2、抽象的特点

抽象类和抽象方法都需要被 abstract 修饰,抽象方法一定要定义在抽象类中
    抽象不能直接创建对象,因为调用抽象方法没有意义
    只有覆盖了抽象类中所有的抽象方法后,其子类才可以创建对象,否则该子类还是一个抽象类
    之所以继承抽象类,更多的是在思想,是面对共性类型操作会更简单

3、抽象类的注意事项

抽象类一定是个父类,因为是不断抽取而来的
    抽象类中可以不定义抽象方法,其存在的意义就是不让该类创建对象,方法可以直接让子类去使用
    抽象关键字 abstract 不可以和以下关键字共存:
    private:私有的方法子类是无法继承到的,也不存在覆盖,如果 abstract 和 private 一起使用修饰方法, abstract 既要子类去实现这个方法,而 private 修饰子类根本无法得到父类这个方法,互相矛盾
    final:final 修饰的类不能被继承,而抽象类一定是父类
    static:static 修饰的表示静态的,不能被修改的,但可以直接被类所调用,而abstract修饰的是抽象的,即没有方法实体,也不能直接被调用
首先我们定义一个Animal的抽象类

package geyao01;public abstract class Animal {public abstract void run() ;//定义一个奔跑的方法
}

定义一个猪类继承这个方法

package geyao01;public class Pig extends Animal{public void run() {System.out.println("我可以奔跑");}
}

定义一个猪的测试类

package geyao01;public class PigTest {public static void main(String[] args) {//创建一个小猪的对象Pig pig=new Pig();//执行小猪的方法pig.run();}
}

运行结果

我可以奔跑

实例解析

  • 将共性“动物”抽取出来形成一个Develop类并定义方法:猪
  • 抽象类不能实例化,即不能 new 抽象方法没有主体
  • 可以定义类来继承抽象类,将抽象类进行重写,然后创建子类的对象
  • 重写父类的抽象方法时,去掉abstract关键字,加上方法主体

java编程思想学习(1):抽象相关推荐

  1. Java编程思想学习笔记-第11章

    <?xml version="1.0" encoding="utf-8"?> Java编程思想学习笔记-第11章 Java编程思想学习笔记-第11章 ...

  2. JAVA编程思想学习笔记——第一章 对象导论

    搞了一年多java,野路子出身,发现java基础这块还是相当的薄弱!故决定学习<Java编程思想>这本书.在此把学习的知识点记录下! 面向对象的五大特性 1.万物皆为对象 2.程序是对象的 ...

  3. Java编程思想学习(一)----对象导论中多态的理解

    1.1抽象过程 1)万物皆对象. 2)程序是对象的集合,他们通过发送消息来告知彼此所要求做的. 3)每个对象都有自己的由其他对象所构成的存储. 4)每个对象都拥有其类型. 5)某一特定类型的所有对象都 ...

  4. Java编程思想学习笔记4 - 序列化技术

    今天来学习下Java序列化和反序列化技术,笔者对<Java编程思想>中的内容,结合网上各位前辈的帖子进行了整理和补充,包括: 序列化概述 Java原生序列化技术 Hessian序列化技术 ...

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

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

  6. JAVA编程思想学习手账初整理

    redis: 缓存击穿:对于访问过期的key查询数据时,加锁,保证只有一个线程去底层获取数据,并返回结果缓存 缓存穿透:对于访问不存在的key时给出空结果并缓存,或引入布隆过滤器将数据提前缓存在布隆过 ...

  7. Java编程思想 学习笔记7

    七.复用类 1.组合语法 在新的类中产生现有类的对象.由于新的类是由现有类的对象所组成,所以这种方法叫做组合. 类中域为基本类型时能够自动被初始化为零.对象引用被初始化为null. 编译器不是简单地为 ...

  8. java编程思想 学习笔记(2)

    第二章     一切都是对象 用引用(reference)操纵对象 String s = "asdf"; String s; 但这里所创建的只是引用,并不是对象.如果此时向s 发送 ...

  9. Java编程思想学习(一) 一切都是对象

    前言 Java是基于C++的,但Java是一种更加纯粹的面向对象程序设计语言. C++和Java都是混合/杂合型语言.杂合型语言允许多种编程风格. 用引用操纵对象 每种编程语言都有自己操纵内存中元素的 ...

最新文章

  1. 使用文件给swap增加空间
  2. vector 查找最大最小值,且求最大值或者最小值在容器中的位置
  3. 罗念梓(帮别人名字作诗)
  4. 安装spark集群,并成功运行
  5. 鸿蒙开发者社区入口,鸿蒙OS 社区
  6. 记忆讲师石伟华微信公众号2017所有文章汇总(待更新)
  7. 自动化持续集成Jenkins
  8. Python3 - 刷博客访问量脚本
  9. (转) RabbitMQ学习之helloword(java)
  10. java跟其_java跟其他语言比有哪些优势?
  11. java面经_作为Java后台,这些都不会的话,就别去面试了
  12. html语言的特殊符号,特殊符号
  13. VFB组件:MonthCalendar控件(月日历)
  14. 【WPS】未安装VBA支持库,无法运行文档中的宏。如需要启用宏功能,请点击这里了解详情。
  15. 【FFmpeg+Qt开发】转码流程 H.264 转(mov、mp4、avi、flv)等视频格式 示例详解
  16. 羊了个羊是怎么赚钱的
  17. 未转变者DLC皮肤在服务器,未转变者 steam上 最新的版本 肿么联机?肿么创建房间...
  18. win10两个磁盘合并成一个?win10系统怎么合并磁盘
  19. mysql ddl ddm_数据库ddl ddm语句
  20. java经典24点算法代码

热门文章

  1. 程序员需要知道的8个Linux命令
  2. qwt自定义时间标尺TimeScale
  3. java集合概念_JAVA集合概念
  4. python excelwriter保存路径_Python和Excel 终于可以互通了!!
  5. 王道操作系统考研笔记——2.3.2 进程互斥的软件实现方法
  6. Linux SD卡驱动开发(四) —— SD 控制器之真正的硬件操作
  7. VS.NET版本与VC版本对应关系
  8. 无法解析的外部符号 _WinMain@16,该符号在函数 ___tmainCRTStartup 中被引用
  9. [Linux C]递归遍历指定目录,以目录树形式展示
  10. 前端学习(3292):副作用