一、继承

1 概念

子类继承父类,即子类继承父类的方法和实例变量,子类可加入自己的方法和实例变量,也可以覆盖继承自父类的方法,但实例变量无法覆盖;

其中,覆盖指由子类重新定义继承下来的方法以改变或延伸此方法的行为;

子类是extends父类出来的;

举例:

public class Doctor{// 一个实例变量boolean worksAtHospital;// 一个方法void treatPatient(){}
}public class FamilyDoctor extends Doctor{//新加实例变量boolean makeHouseCalls;// 新加方法void giveAdvice(){}
}public class Sugeon extends Doctor{// 覆盖父类的方法void treatPatient(){}// 新加方法void makeIncision(){}
}

2 设计继承层次

a 找出具有共同属性和行为的对象

b 设计代表共同状态与行为的类

c 决定子类是否需要让某项行为(即方法)有特定的运作方式

d 通过寻找使用共同行为的子类来找出更多抽象化的机会

e 完成类的继承

3 注意

3.1 当调用对象引用的方法,Java虚拟机会调用到与该对象类型最接近的方法,即最低阶的方法;

3.2 若子类中继续引用父类的方法,再加上额外的行为,可在父类中设计所有子类都适用的功能实现,通过super关键字取用父类,如:

public void roam(){super.roam();// my own roam stuff
}

3.3 父类可通过存取权限决定子类是否能继承某些特定的成员,权限有private、default、protected、public,越往右限制程度越小,存取权限控制谁可以接触什么,如public类型的成员会被继承,private类型的成员不会被继承;

3.4 大部分继承深度不会超过两层;

3.5 只有内部类,没有私有类概念,即类不能标记为私有,但有三种方法防止某个类被作出子类,一是存取控制,不标记公有的类只能被同一个包的类作出子类;二是使用final修饰符,表示其是继承树的末端,不能被继承;三是让类只拥有private的构造程序;

二、多态

运用多态时,引用类型可以是实际对象类型的父类,参数和返回类型也可以是实际对象类型的父类;

通过多态,可编写出引进新型子类时也不必修改的程序;

Animal myDog = new Dog();class Vet{public void giveeShot(Animal a){a.makeNoise();}
}
class PetOwner{public void start(){Vet v = new Vet();Dog d = new Dog();Hippo h = new Hippo();v.giveShot(d);  // 执行Dog的makeNiose()v.giveShot(h);  // 执行Hippo的makeNiose()}
}

三、覆盖

1 概念

若只想防止特定的方法被覆盖,可将该方法标识上final修饰符;将整个类标识成final,表示没有任何的方法可以被覆盖;

2 覆盖规则

参数必须要一样,且返回类型必须要兼容;

不能降低方法的存取权限;

四、方法的重载

1 概念

重载是两个方法的名称相同,但参数不同,故重载与覆盖没有关系;

2 重载规则

返回类型可以不同;

不能只改变返回类型;

可更改存取权限;

public class Overloads{String uniqueID;public int addNums(int a, int b){return a + b;}public double addNums(double a, double b){return a + b;}public void setUniqueID(String theID){uniqueID = theID;}public void setUniqueID(int ssNumber){String numString = "" + ssNumber;setUnique(numString);}
}

HeadFirstJava——7_继承与多态相关推荐

  1. Go 学习笔记(36)— 基于Go方法的面向对象(封装、继承、多态)

    Go 面向对象编程的三大特性:封装.继承和多态. 封装:隐藏对象的属性和实现细节,仅对外提供公共访问方式 继承:使得子类具有父类的属性和方法或者重新定义.追加属性和方法等 多态:不同对象中同种行为的不 ...

  2. Python中的继承和多态

    本文以生活中的基础现象为切入点,主要介绍了Python基础中继承和多态,包括单继承.多继承的语法.多态常见的 "鸭子类型". 以及如何重写父类的方法都做了详细的讲解. 一.继承的介 ...

  3. python 继承和多态

    python 继承和多态 在OOP程序设计中,当我们定义一个class的时候,可以从某个现有的class继承,新的class称为子类(Subclass),而被继承的class称为基类.父类或超类(Ba ...

  4. java 封装 继承 堕胎_JAVA封装、继承、多态

    封装 1.概念: 将类的某些信息隐藏在类的内部,不允许外部程序访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问. 2.好处: a.只能通过规定的方法访问数据 b.隐藏类的实例细节,方便修改和实 ...

  5. Python面对对象编程——结合面试谈谈封装、继承、多态,相关习题详解

    1.面向对象的三大特征 封装:属性和方法放到类内部,通过对象访问属性或者方法,隐藏功能的实现细节.当然还可以设置访问权限; 继承:子类需要复用父类里面的属性或者方法,当然子类还可以提供自己的属性和方法 ...

  6. Java基础-OOP特性之封装、继承、多态、抽象

    为什么80%的码农都做不了架构师?>>>    //要习惯将程序(功能.代码)模块化 //OOP四大特性:封装.继承.多态.抽象 //OOP的核心:封装一个类,把数据抽象出来,再把方 ...

  7. 第10章 接口、继承与多态----抽象类和接口

    一.抽象类 在解决实际问题时,一般将父类定义为抽象类,需要使用这个父类进行继承与多态处理.回想继承和多态原理,继承树中越是在上方的类越抽象,如:鸽子类继承鸟类.鸟类继承动物类等.在多态机制中,并不需要 ...

  8. Java进阶篇(一)——接口、继承与多态

    前几篇是Java的入门篇,主要是了解一下Java语言的相关知识,从本篇开始是Java的进阶篇,这部分内容可以帮助大家用Java开发一些小型应用程序,或者一些小游戏等等. 本篇的主题是接口.继承与多态, ...

  9. java继承和多态的实验报告_JAVA,继承和多态实验报告

    实验项目名称 : 继承和多态 ( 所属课程 : Java 语言程序设计 ) 院 系: 专业班级: 姓 名: 学号: 实验地点: 指导老师: 本实验项目成绩: 教师签字: 日期: 1.实验目的 (1)掌 ...

  10. 封装 继承 多态_Java基础知识——封装、继承、多态

    1 基本概括 2 详解 封装: 是将类的某些信息隐藏在类的内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问 封装的优点:只能通过规定的方式来访问数据:隐藏类的实现细节: ...

最新文章

  1. 目标检测中特征融合技术(YOLO v4)(下)
  2. 【转】触屏手机电话拨打链接
  3. 新手探索NLP(六)——全文检索
  4. 怎么关闭eureka的服务_SpringCloud微服务踩坑系列之二
  5. 【深度学习】sigmoid - 二次代价函数 - 交叉熵 - logistic回归 - softmax
  6. nginx集群tomcat,session共享问题
  7. Ubuntu 14.04 修改时区
  8. OpenCV_02 图像的基本操作:图像IO+绘制图形+像素点+属性+图像通道+色彩空间的改变
  9. 想学好C语言?先把基础打好再说吧!
  10. 华为拿百亿资金给员工分红,预计每股1.58元
  11. 纵横安卓刷机界的CM,如今转行做无人车了,还获得了加州路测许可
  12. 国密SM2算法陷入安全危机? 假!SM2仍然安全
  13. vue生产环境使用localhost请求端口号不是自己设置的?来试试这个
  14. Word控件Spire.Doc 转换教程(三):如何将 Word 转换为 PDF
  15. 第三阶段应用层——1.12 数码相册—interval_page设置时间间隔界面的显存管理、页面规划、输入控制
  16. 计算机资源管理窗口,资源管理器怎么打开,教您打开电脑资源管理器
  17. u3d canvas设置
  18. java中的迭代是什么意思_JAVA里的 迭代 具体是指什么意思
  19. 全景视角下的世界探索——三维全景地图
  20. BI神器Power Query(15)-- PQ制作时间维度表(4)

热门文章

  1. 计算机用三角函数时如何用弧度制,5.1.2弧度制教学设计
  2. 网易镜像 mysql_Docker的常用镜像及使用方式
  3. Oracle P6培训系列:01安装
  4. 非常好的理解遗传算法的例子
  5. modelsim安装_Vivado联合ModelSim
  6. pip下载包的默认路径
  7. android sonar 简书,初识Sonar
  8. ISO50001认证辅导,ISO 50001的能源管理允许组织对自己内部的节能潜力进行系统开发
  9. PDMS二次开发(五)——小试牛刀之细节整理和收尾
  10. 海康威视摄像头Android直播APP开发