根据父类id查询所有的父级_父类子类抽象类,super final 重写方法,搞懂继承中复杂的知识点...

继承

继承(Inheritance)可以实现类之间共享属性和方法,是面向对象编程的另一个特性

使用继承可以最大限度地实现代码复用。

  • 定义:继承就是在已有类的基础上构建新的类一个类继承已有类后,可以对被继承类中的属性和方法进行重用
  • 继承关系说明:继承关系通常也称为 is a kind of 关系。类B 继承自 类A 意味着:A所有的特点B都有,B还有一些A不具备的特点即B is a kind of A ,反之则不一定。A是一般类,B是特殊类。

举例:

59ec3375c3bcc2eaf1e95263d62a08c8.png

Employee类:

• 属性:private修饰的属性id和name

• 方法:public修饰的构造方法和setName(String)、

getNumber()、getName()方法

PartTimeEmployee类 继承Employee的属性和方法

增加了

• 属性:private修饰的属性hourlyPay

• 方法:其他方法

• 在UML中用三角形箭头表示继承关系

继承的实现:

类的继承通过extends关键字来实现。具体语法如下:

class SubClass extends SuperClass {

子类类体

}

重点

(1)当SubClass和BaseClass位于同一个包中,则SubClass继承SuperClass中public、protected和默认访问级别的成员变量和成员方法。

(2)当Sub类和Base类位于不同的包中:SubClass继承SuperClass中public 、protected访问级别的成员变量和成员方法。

  • Java中不允许多重继承子类只能继承一个父类,即单一继承。但是,Java可以有多层继承。即一个类可以继承某一个类的子类,从而形成一颗继承树。

继承时要遵循的原则:

1.继承的层次不可太多

继承的层次应该尽量保持在两到三层,如果继承层次很多,会导致对象之间的结构关系太复杂,难以理解,增加设计和开发的难度。

2.继承树的上层为抽象层

当一个系统使用一个继承树上的类时,应该尽可能把引用变量声明为继承树的上层类型,这样可以降低类之间的耦合性。

方法重写:

注意事项

  1. 方法重写时, 方法名与形参列表必须一致
  2. 方法重写时,子类的权限修饰符必须要大于或者 等于父类的权限修饰符
  3. 方法重写时,子类返回值类型必须要小于或者 等于父类的返回值类型
  4. 方法重写时, 子类抛出的异常类型小于或者 等于父类抛出的异常类型

super关键字

  • super代表父类对象。super关键字用来在子类的成员方法中访问父类成员

(1)使用super访问父类的成员变量和成员方法。语法如下:

super.成员变量

super.成员方法([参数1,参数2,......])

(2)使用super关键字访问父类的构造方法。语法如下:

super([参数1,参数2......])

super总结

每一个子类的构造方法在没有显示调用super()系统都会提供一个默认的super()

super() 书写在第一行

可以在子类构造方法中显示调用super(),完成对特定父类构造方法的调用

当父类只有含缺省值参数的构造方法时,一定要在子类构造方法的第一行显示地调用父类构造方法

final修饰符

final 修饰变量,变量转换为常量。final也可以修饰类或者方法

  • final修饰类,意味着这个类不能被继承,声明的格式为:

final class finalClassName{

........

}

  • final修饰方法,意味着这个方法不能被重写

class FinalMethodClass{

final void finalMethod (){

…//原程序代码

}

}

  • final修饰的变量一旦被赋值,这个值不能被改变。如果对该变量进行再次赋值,则程序会在编译时报错。
class Student {        final String name;//name没有被初始化        public void introduce(){                System.out.println(“我叫”+name+”,是一名程序员”);        }}public class FinalExample{        pubic static void main (String[] args){                Student stu=new Student()        stu.introduce();         }}//编译会出错:提示变量name没有被初始化

抽象类

//抽象类的实现abstract class Animal {            //定义抽象方法shout()            public abstract void shout(){};}class Dog extends Animal{            //实现抽象方法shout()            public void shout(){                        System.out.println(“汪汪汪......”);                        }}public class AbstractExample{public static void main(String[] args){Dog dog = new Dog();dog.shout();}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/406310.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【黑金原创教程】【FPGA那些事儿-驱动篇I 】实验十八:SDRAM模块① — 单字读写...

实验十八:SDRAM模块① — 单字读写 笔者与SDRAM有段不短的孽缘,它作为冤魂日夜不断纠缠笔者。笔者尝试过许多方法将其退散,不过屡试屡败的笔者,最终心情像橘子一样橙。《整合篇》之际,笔者曾经大战几回儿,不…

gateway请求拦截_一种网关对用户请求进行统一拦截判断是否放行的方法与流程...

本发明涉及互联网技术领域,特别涉及一种网关对用户请求进行统一拦截判断是否放行的方法。背景技术:随着互联网发展的越来越快,技术也更新的非常频繁,比如开发一个系统的架构由最初始的单个服务器就能处理演变到现在的利用springcl…

spark sql 上个月_Spark学习之路 (十八)SparkSQL简单使用

一、SparkSQL的进化之路1.0以前:Shark1.1.x开始:SparkSQL(只是测试性的) SQL1.3.x:SparkSQL(正式版本)Dataframe1.5.x:SparkSQL 钨丝计划1.6.x:SparkSQLDataFrameDataSet(测试版本)x:SparkSQLDataFrameDataSet(正式版本)SparkSQL:还有其他的…

GetClientRect相当于GetWindowRect和ScreenToClient区别

From: http://www.cnblogs.com/yongtaiyu/archive/2011/05/18/2049554.html GetWindowRect是取得窗口在屏幕坐标系下的RECT坐标(包括客户区和非客户区),这样可以得到窗口的大小和相对屏幕左上角(0,0)的位置。 GetClientRect取得窗口客户区(…

xxljob 配置具体定时任务_记一次xxl-job定时任务没有触发的问题

当初选了xxl-job就是因为它的触发机制比较靠谱,到点准时发,而且有日志可以看。 昨天突然发现部署在一台本地机器上的xxl-job到点并没有触发,且没有任何日志。通过管理页面查询触发日志,发现日志还是有的,只是和筛选条件不甚匹配。比如选取了昨天的日志,结果集中包含了今天…

TOMCAT启动完成但是ECLIPSE仍然显示starting....

最近重新部署了一个TOMCAT服务,但是启动碰到个问题,虽然TOMCAT控制台已显示启动成功,但是ECLIPSE右下角仍然一直显示STARTING,最后TOMCAT超时,启动失败。之前以为是拷贝工程的问题,但其实是SERVER配置的问题…

例解 autoconf 和 automake 生成 Makefile 文件

From: http://www.ibm.com/developerworks/cn/linux/l-makefile/ 简介: 本文介绍了在 linux 系统中,通过 Gnu autoconf 和 automake 生成 Makefile 的方法。主要探讨了生成 Makefile 的来龙去脉及其机理,接着详细介绍了配置 Configure.in 的方…

爱慕内衣信息化颠覆流程重构供应链

通过IT,爱慕内衣进行了供应链流程的颠覆和重构。在北京慕集团首席信息官赵先生脑海中,一直有着这样一幅“大图景”:只要需要,老总在自己的办公室里能看到每一寸原料的采购情况,每一件成衣的生产和销售情况,…

mysql中 课程1比课程2成绩高_小菜菜mysql练习解读分析1——查询 01 课程比 02 课程成绩高的学生的信息及课程分数...

查询" 01 "课程比" 02 "课程成绩高的学生的信息及课程分数好的,第一道题,刚开始做,就栽了个跟头,爽歪歪,至于怎么栽跟头的——需要分析题目,查询的是,查询的是(1)学生的信息…

window mysql集群视频_windows7实现mysql集群cluster-mysql簇

http://bitar.cn下载:mysql-cluster-gpl-7.4.7-winx64内置了:mysql-5.6.25,ndb-7.4.7文档可参考 mysql参考手册【mysql簇】管理(MGM)节点新建文件夹,存放ndb_mgm.exe 和ndb_mgmd.exe,就是管理(MGM)节点不需要mysql客户端端口监督程…

Human_height

Country/RegionAverage male heightAverage female heightSample population / age rangeMethodologyYearSourceArgentina1.745 m (5 ft 81⁄2 in)1.610 m (5 ft 31⁄2 in)19Measured1998–2001[1]Australia1.748 m (5 ft 9 in)1.634 m (5 ft 41⁄2 in)18Measured1995[2]Austra…

TreeSet()详解

/* * TreeSet存储对象的时候, 可以排序, 但是需要指定排序的算法 * * Integer能排序(有默认顺序), String能排序(有默认顺序), 自定义的类存储的时候出现异常(没有顺序) * * 如果想把自定义类的对象存入TreeSet进行排序, 那么必须实现Comparable接口 * 在类上implement Com…