java 第七章 面向对象高级特性
一、类的继承
(一)继承的含义
1、在Java中定义一个类时,让该类通过关键字extends继承一个已有的类,这就是类的继承(泛化)。
2、被继承的类称为父类(超类,基类),新的类称为子类(派生类)。
3、子类继承父类的所有属性和方法,同时也可以增加自己的属性和方法。
注:
Java中只能单继承,也就是说每个类只能有一个直接父类;一个父类可以有多个子类。
A is a B
A extends B
A在某种情况下能够替换B做某些事(里氏替换)
(二)语法:
[修饰符] class 子类名 extends 父类名
(三)好处
1、使编码更高效
2、易维护
3、代码的重用
(四)子类实例过程
先实例化其父类,在实例化子类
先调用父类的构造器,在调用子类构造器
二、包
(一)用途
1、包允许将类型组合成较小的单元。
2、有助于避免命名冲突。
3、包允许在更广的范围内保护类,数据和方法。
(二)包可以是类、接口和子包的集合
将类放入包中 package 包名;
(三)注:
1、在java中位于包中的类,在文件系统中的存放位置,必须有与包名层次相对应的目录结构
2、package语句作为java源文件第一条语句
3、每个源文件只能声明一个包
4、如果没有package语句,默认无包名
(四)包命名规范
1、包开头盈利单位一般用com/cn,组织机构一般用org。
2、包名均有小写字母。
(五)常用包
1、java.lang java语言包,自动导入
2、java.aut 图形用户界面包
3、java.aut.event 图形用户界面事件处理包
4、java.swing 跨平台轻量级组件包
5、java.sql 数据库访问包
6、java.io 由对输入/输出操作用的类组成
7、java.util 提供创建如:lists,calender,date等所需要的类和接口
8、java.net 提供可许多进行TCP/IP网络编程的类和接口
(六)import导入包中的类
语法:import 包名.子包名.类名;
如果位于同一个包可以直接访问
三、方法的覆盖(重写)
1、重写
2、对从父类继承的方法进行改造
3、在子类继承时发生
规则:
1、相同的方法名
2、形同的参数列表
3、相同的返回值类型
4、子类覆盖后的方法访问权限修饰符范围不小于父类方法的访问全系修饰符范围
四、多态(动态绑定 Polymorphism)
1、不同对象对同一行做出不同的响应
2、多态存在的必要条件:(1)要有重写或实现
(2)要有重写
(3)父类引用指向子类对象
优点:
1、简化代码
2、改善代码的组织性和可读性
3、易于扩展
五、抽象类
(一)概念
1、抽象类在class前加abstract关键字(有抽象方法的类必须是抽象类)
2、抽象方法在修饰符位置加abstract
3、抽象方法没有方法体,由分号代替
4、抽象类中可以有非抽象方法(抽象类是抽象方法和非抽象方法的集合)
5、语法:[访问权限修饰符] abstravct class 类名{
...
}
特殊情况:全部是抽象方法,全部是非抽象方法
注:当一个继承自一个有抽象方法的抽象类时,必须全部重写抽象方法,否则子类必须声明为抽象类
(二)抽象方法
只有方法声明,没有方法实现的方法。
语法: [访问权限修饰符] abstract 返回值类型 抽象方法名(参数类表);
(三)抽象类的规则
1、抽象类不能实例化
2、其包含的抽象方法必须在子类中被实现,否则该子类只能声明为abstract
3、抽象方法不能为static
注:下列情况,类必须为抽象类
1、当一个类的一个或多个方法是抽象方法时
2、当一个类是抽象类的子类,并且没有实现父类的所有抽象方法
3、当一个类实现一个接口,并且不能为全部抽象方法都提供实现时
六、接口
(一)概念:
1、只包含常量和抽象方法
2、对类来说是一套行为协议,一套规范
3、接口不是一个类,不能实例化
(二)语法:
[访问权限修饰符] interface 接口名{
接口成员
}
(三)注:
1、接口不是类,没有构造器
2、接口使用interface关键字来定义
3、接口默认:(1)常量:public static final
(2)方法:public abstract
(四)接口可以实现多继承
1、用接口可以实现混合类型(主类型,副类型),java中通过接口分出主次类型
2、主类型使用继承,副类型使用接口实现
3、接口可以使方法的定义和实现相分离,降低模块间的或系统间的耦合性
4、针对接口编程可以屏蔽不同实现的差异,看到的只是实现好的功能
(五)接口和类的关系
类实现接口----------implements
1、为了实现一个接口,你要编写实现接口的类
2、如果接口要实现,name这个类就必须实现接口中的所有的抽象方法,否则这个类只能声明为抽象类
3、多个无关的类可以实现一个接口,一个类可以实现多个无关的接口
4、一个类在继承一个父类的同时,实现一个或多个接口、
(六)接口与抽象类的比较
1、接口不能含有任何非抽象方法,而抽象类可以
2、类可以实现多个接口,但只能有一个父类
3、接口和接口之间可以多继承
4、抽象类可以理解为抽象方法和非抽象方法的范合体,而接口中的方法完全是抽象方法,是一套纯粹的规范,一般来说,有关系的类才能继承同一个抽象类,而无关的类不可能有同一个抽象父类,但是无关的类可以实现同一个接口
(七)内部类
特征:
1、内部类就是定义在另一个类内部的类
2、内部类对于同一包中的其它类来说,内部类能够隐藏起来
3、普通类访问修饰符:default public
4、内部类访问修饰符:default public protected private
例:若Inner类在Outer类中则
在Outer内访问Inner, Inner in = new Inner();
在Outer外访问Inner, Outer o = new Outer();
Outer.Inner ol = o.new Inner();
java 第七章 面向对象高级特性的更多相关文章
- Python第七章-面向对象高级
面向对象高级 一. 特性 特性是指的property. property这个词的翻译一直都有问题, 很多人把它翻译为属性, 其实是不恰当和不准确的. 在这里翻译成特性是为了和属性区别开来. 属性是指的 ...
- Java第五次作业--面向对象高级特性(抽象类与接口)
Java第五次作业--面向对象高级特性(抽象类与接口) (一)学习总结 1.在上周完成的思维导图基础上,补充本周的学习内容,对Java面向对象编程的知识点做一个全面的总结. 2.汽车租赁公司,出租汽车 ...
- Java第四次作业——面向对象高级特性(继承和多态)
Java第四次作业--面向对象高级特性(继承和多态) (一)学习总结 1.学习使用思维导图对Java面向对象编程的知识点(封装.继承和多态)进行总结. 2.阅读下面程序,分析是否能编译通过?如果不能, ...
- Java第四次作业,面向对象高级特性(继承和多态)
Java第四次作业-面向对象高级特性(继承和多态) (一)学习总结 1.学习使用思维导图对Java面向对象编程的知识点(封装.继承和多态)进行总结. 2.阅读下面程序,分析是否能编译通过?如果不能,说 ...
- Java第四次作业—面向对象高级特性(继承和多态)
Java第四次作业-面向对象高级特性(继承和多态) (一)学习总结 1.学习使用思维导图对Java面向对象编程的知识点(封装.继承和多态)进行总结. 2.阅读下面程序,分析是否能编译通过?如果不能,说 ...
- “全栈2019”Java第七章:IntelliJ IDEA注释快捷键
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- [Effective Java]第七章 方法
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...
- Java第五次作业--面向对象高级特性(抽象类和接口)
一.学习要点 认真看书并查阅相关资料,掌握以下内容: 掌握抽象类的设计 掌握接口的设计 理解简单工厂设计模式 理解抽象类和接口的区别 掌握包装类的应用 掌握对象的比较方法和比较器的使用 学习使用日期操 ...
- Java第四次作业--面向对象高级特性(继承和多态)
一.学习要点 认真看书并查阅相关资料,掌握以下内容: 掌握类的继承概念和设计 掌握构造方法的继承原则 掌握方法重写 掌握super键字和final关键字 理解多态的概念,掌握通过方法重写和方法重载机制 ...
随机推荐
- Oracle 内存使用建议性能视图
下面三个查询结果均可查询出随着内存参数设置的变化性能的变化情况,对oracle数据库内存的设置有一定的建议和指导作用. select t.SGA_SIZE,t.ESTD_DB_TIME_FACTOR ...
- tq2440 jlink连接问题
由于工作转向做嵌入式linux平台上的手台通信协议开发,所以想系统的学习一下嵌入式linux的开发流程. 向同事借了tq2440的板子来玩,一边看书,一边做实验,看的书是<嵌入式linux基础教 ...
- The Tao to Excellent
1:一次只做一件事情 我不具备同时做好多件事情的能力. 2:随身携带一本书 效率最高的学习时间是那些零碎的时间. 3:听身体的 休息的标准是:如果你觉得你是在休息,那你就是在休息了. 4:如果有一件事 ...
- Windows下设置Ubuntu引导项
最近在进行一些实验环境的配置,最终通过双系统实现了多系统的管理,而不仅限于虚拟机的方式.以此方式成功安装了Windows8.1 Pro和Windows 10,原文在此. 在此基础上进一步安装了 Ubu ...
- 理解Underscore中的节流函数
上一篇中讲解了Underscore中的去抖函数(_.debounced),这一篇就来介绍节流函数(_.throttled). 经过上一篇文章,我相信很多人都已经了解了去抖和节流的概念.去抖,在一段连续 ...
- ListView实现分页加载(三)实现分页加载
在上一篇中,我们实现了底部布局(即带上了进度条).没有读过的朋友可以点击下面的链接: http://www.cnblogs.com/fuly550871915/p/4866966.html 但是进度条 ...
- Java程序员从笨鸟到菜鸟之(九十六)深入java虚拟机(五)——java本地接口JNI详解
http://blog.csdn.net/csh624366188/article/details/8063144 对于Java程序员来说,java语言的好处和优点,我想不用我说了,大家自然会说出很多 ...
- [19/03/30-星期六] IO技术_四大抽象类_ 字节流( 字节输入流 InputStream 、字符输出流 OutputStream )_(含字节文件缓冲流)
一.概念及分类 InputStream(输入流)/OutputStream(输出流)是所有字节输入输出流的父类 [注]输入流和输出流的是按程序运行所在的内存的角度划分的 字节流操作的数据单元是8的字节 ...
- Mybatis——实体类属性名和数据库字段名不同时的解决方案
数据库的字段: 对应的实体类: 方案一: 在XML映射文件中使用的resultMap,优点:可以被重复使用. <resultMap id="BaseResultMap" ty ...
- hbase添加大文件
一直使用hbase作大容量存储,因为hbase易于存取. 今天,在录入数据的时候,突然报出一个KeyValue size too large.很是奇怪. 后来发现,该数据特别大,经查源码 privat ...