一、类的继承

(一)继承的含义

  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 第七章 面向对象高级特性的更多相关文章

  1. Python第七章-面向对象高级

    面向对象高级 一. 特性 特性是指的property. property这个词的翻译一直都有问题, 很多人把它翻译为属性, 其实是不恰当和不准确的. 在这里翻译成特性是为了和属性区别开来. 属性是指的 ...

  2. Java第五次作业--面向对象高级特性(抽象类与接口)

    Java第五次作业--面向对象高级特性(抽象类与接口) (一)学习总结 1.在上周完成的思维导图基础上,补充本周的学习内容,对Java面向对象编程的知识点做一个全面的总结. 2.汽车租赁公司,出租汽车 ...

  3. Java第四次作业——面向对象高级特性(继承和多态)

    Java第四次作业--面向对象高级特性(继承和多态) (一)学习总结 1.学习使用思维导图对Java面向对象编程的知识点(封装.继承和多态)进行总结. 2.阅读下面程序,分析是否能编译通过?如果不能, ...

  4. Java第四次作业,面向对象高级特性(继承和多态)

    Java第四次作业-面向对象高级特性(继承和多态) (一)学习总结 1.学习使用思维导图对Java面向对象编程的知识点(封装.继承和多态)进行总结. 2.阅读下面程序,分析是否能编译通过?如果不能,说 ...

  5. Java第四次作业—面向对象高级特性(继承和多态)

    Java第四次作业-面向对象高级特性(继承和多态) (一)学习总结 1.学习使用思维导图对Java面向对象编程的知识点(封装.继承和多态)进行总结. 2.阅读下面程序,分析是否能编译通过?如果不能,说 ...

  6. “全栈2019”Java第七章:IntelliJ IDEA注释快捷键

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  7. [Effective Java]第七章 方法

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  8. Java第五次作业--面向对象高级特性(抽象类和接口)

    一.学习要点 认真看书并查阅相关资料,掌握以下内容: 掌握抽象类的设计 掌握接口的设计 理解简单工厂设计模式 理解抽象类和接口的区别 掌握包装类的应用 掌握对象的比较方法和比较器的使用 学习使用日期操 ...

  9. Java第四次作业--面向对象高级特性(继承和多态)

    一.学习要点 认真看书并查阅相关资料,掌握以下内容: 掌握类的继承概念和设计 掌握构造方法的继承原则 掌握方法重写 掌握super键字和final关键字 理解多态的概念,掌握通过方法重写和方法重载机制 ...

随机推荐

  1. 关于cmake输出动态链接库名字的问题

    使用cmake进行项目编译管理时,我们经常使用 add_library(foo SHARED foo.cpp) 这样的话,输出时,如果在win下面会得到foo.dll,linux下面会得到libfoo ...

  2. February 1 2017 Week 5 Wednesday

    If you can't get a miracle, become one. 如果奇迹没有眷顾你,那就让自己变成奇迹吧. If you think you are bad luck, you did ...

  3. PhoneGap 的存储 API_Web Sql

    一.介绍 此 API 基于 W3C WEB SQL Database Specification 和 W3C Web Storage API Specification. 有些 设备已经提供了对该规范 ...

  4. 在.Net项目中使用Redis作为缓存服务

    转自:http://www.cnblogs.com/hohoa/p/5771255.html 最近由于项目需要,在系统缓存服务部分上了redis,终于有机会在实际开发中玩一下,之前都是自己随便看看写写 ...

  5. yolo2 anchor选择校招总结

    使用kmeans的聚类算法选择数据集最可能的anchor size和ratio.K-means算法是很典型的基于距离的聚类算法,采用距离作为相似性的评价指标,即认为两个对象的距离越近,其相似度就越大. ...

  6. JavaSE注释

    注解在JavaSE中算是比较高级的一种用法了,为什么要学习注解,我想大概有以下几个原因: 1. 可以更深层次地学习Java,理解Java的思想. 2. 有了注解的基础,能够方便阅读各种框架的源码,比如 ...

  7. PAT——有几个PAT

    思路来源:https://www.cnblogs.com/asinlzm/p/4440603.html 字符串APPAPT中包含了两个单词“PAT”,其中第一个PAT是第2位(P),第4位(A),第6 ...

  8. 构建一个hashmap死锁的DEMO

    package threadmodle; import java.util.HashMap; import java.util.Map; import java.util.UUID; public c ...

  9. Google Fonts导致网页加载速度慢

    最近在做商城项目时候发现在加载一个html页面反应非常慢,查看发现是Google Font导致的网页加载速度缓慢,删除掉该样式会发现很多内容出错. 上网百度发现问题在于: 谷歌香港(google.co ...

  10. Office365学习笔记—列表查询,删除条目,更新条目。

    1,基于Query语句的列表查询. function retrieveListItems(itemId) { var siteUrl=_spPageContextInfo.webServerRelat ...