java编程思想学习(1):抽象
今天开始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):抽象相关推荐
- Java编程思想学习笔记-第11章
<?xml version="1.0" encoding="utf-8"?> Java编程思想学习笔记-第11章 Java编程思想学习笔记-第11章 ...
- JAVA编程思想学习笔记——第一章 对象导论
搞了一年多java,野路子出身,发现java基础这块还是相当的薄弱!故决定学习<Java编程思想>这本书.在此把学习的知识点记录下! 面向对象的五大特性 1.万物皆为对象 2.程序是对象的 ...
- Java编程思想学习(一)----对象导论中多态的理解
1.1抽象过程 1)万物皆对象. 2)程序是对象的集合,他们通过发送消息来告知彼此所要求做的. 3)每个对象都有自己的由其他对象所构成的存储. 4)每个对象都拥有其类型. 5)某一特定类型的所有对象都 ...
- Java编程思想学习笔记4 - 序列化技术
今天来学习下Java序列化和反序列化技术,笔者对<Java编程思想>中的内容,结合网上各位前辈的帖子进行了整理和补充,包括: 序列化概述 Java原生序列化技术 Hessian序列化技术 ...
- Java编程思想 学习笔记1
一.对象导论 1.抽象过程 Alan Kay曾经总结了第一个成功的面向对象语言.同时也是Java所基于的语言之一的Smalltalk的五个基本特性,这些特性表现了纯粹的面向对象程序设计方式 1)万物皆 ...
- JAVA编程思想学习手账初整理
redis: 缓存击穿:对于访问过期的key查询数据时,加锁,保证只有一个线程去底层获取数据,并返回结果缓存 缓存穿透:对于访问不存在的key时给出空结果并缓存,或引入布隆过滤器将数据提前缓存在布隆过 ...
- Java编程思想 学习笔记7
七.复用类 1.组合语法 在新的类中产生现有类的对象.由于新的类是由现有类的对象所组成,所以这种方法叫做组合. 类中域为基本类型时能够自动被初始化为零.对象引用被初始化为null. 编译器不是简单地为 ...
- java编程思想 学习笔记(2)
第二章 一切都是对象 用引用(reference)操纵对象 String s = "asdf"; String s; 但这里所创建的只是引用,并不是对象.如果此时向s 发送 ...
- Java编程思想学习(一) 一切都是对象
前言 Java是基于C++的,但Java是一种更加纯粹的面向对象程序设计语言. C++和Java都是混合/杂合型语言.杂合型语言允许多种编程风格. 用引用操纵对象 每种编程语言都有自己操纵内存中元素的 ...
最新文章
- 使用文件给swap增加空间
- vector 查找最大最小值,且求最大值或者最小值在容器中的位置
- 罗念梓(帮别人名字作诗)
- 安装spark集群,并成功运行
- 鸿蒙开发者社区入口,鸿蒙OS 社区
- 记忆讲师石伟华微信公众号2017所有文章汇总(待更新)
- 自动化持续集成Jenkins
- Python3 - 刷博客访问量脚本
- (转) RabbitMQ学习之helloword(java)
- java跟其_java跟其他语言比有哪些优势?
- java面经_作为Java后台,这些都不会的话,就别去面试了
- html语言的特殊符号,特殊符号
- VFB组件:MonthCalendar控件(月日历)
- 【WPS】未安装VBA支持库,无法运行文档中的宏。如需要启用宏功能,请点击这里了解详情。
- 【FFmpeg+Qt开发】转码流程 H.264 转(mov、mp4、avi、flv)等视频格式 示例详解
- 羊了个羊是怎么赚钱的
- 未转变者DLC皮肤在服务器,未转变者 steam上 最新的版本 肿么联机?肿么创建房间...
- win10两个磁盘合并成一个?win10系统怎么合并磁盘
- mysql ddl ddm_数据库ddl ddm语句
- java经典24点算法代码
热门文章
- 程序员需要知道的8个Linux命令
- qwt自定义时间标尺TimeScale
- java集合概念_JAVA集合概念
- python excelwriter保存路径_Python和Excel 终于可以互通了!!
- 王道操作系统考研笔记——2.3.2 进程互斥的软件实现方法
- Linux SD卡驱动开发(四) —— SD 控制器之真正的硬件操作
- VS.NET版本与VC版本对应关系
- 无法解析的外部符号 _WinMain@16,该符号在函数 ___tmainCRTStartup 中被引用
- [Linux C]递归遍历指定目录,以目录树形式展示
- 前端学习(3292):副作用