根据父类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,一经查实,立即删除!

相关文章

Echarts y轴高度设置(宽度铺满整个父级高度)

Echarts y轴高度设置(宽度铺满整个父级高度)

利用 Cloudera 实现 Hadoop (二)

安装 规划好了就开始安装Hadoop,如前言中所说使用Cloudera的Hadoop发布版安装Hadoop是十分方便的,首先当然是在每台主机上一个干净的操作系统(我用的是Ubuntu 8.04,用户设为Hadoop,其它的版本应该差不多)&…

CPaintDC、CClientDC、CWindowDC和CMetaFileDC类的主要特点及区别-Windows绘图基础知识

From: http://blog.csdn.net/zhangxinrun/article/details/5829084 一、设备环境(DC)的概念(1)在Windows中,显示工作是基于设备环境的。所谓设备环境(DC)是一种Windows数据结构,该结…

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

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

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

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

git修改/添加/删除远程仓库

git修改/添加/删除远程仓库

基础——ASP.NET页面的生命周期

页请求:页请求发生在页生命周期开始之前。当用户请求一个页面,ASP.NET将确定是否需要分析或者编译该页面,或者是否可以在不运行页的情况下直接请求缓存响应客户端。 开始:发生请求后,页面就进入了初始化阶段。在该阶段…

主函数 main WinMain _tmain _tWinMain 的区别

From: http://blog.csdn.net/zhangxinrun/article/details/5781451 main是C/C的标准入口函数名 WinMain是windows API窗体程序的入口函数。(int WINAPI WinMain()) 中 WINAPI是__stdcall宏,在windef.h中定义的。 _tmain _tWinMain 是Unicode版本函数别名&#xff0c…

selenium之HTMLTestRunner练习

最近工作不忙,开始学习python&selenium,有很多理解模糊的地方,做下记录,希望大神可以指导。 练习1: 小插曲1:执行代码以后,发现baidu.html空的,执行多次发现原因,必须…

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:还有其他的…

Mac 生成SSH Key并配置到GitLab(单个)

Mac 生成SSH Key并配置到GitLab(单个)

一封写给自己的信

亲爱的自己,从今天起为了自己骄傲的活着吧,好好爱自己,没有人会心疼你,除了你妈妈。亲爱的自己,不要太在意一些人太在乎一些事,顺其自然以最佳心态面对,因为这世界就是这么不公平,往…

GetClientRect相当于GetWindowRect和ScreenToClient区别

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

汇编中call printf参数压栈时错误理解

EAX, ECX,EDX,EBX均可以32bit,16bit,8bit访问&#xff0c;如下所示: <-------------------EAX------------------------>|<----------------------|-----------|----------->|             |<---------AX--------->|             |&…

ajax传输json数据格式乱码_解决Ajax加载JSon数据中文乱码问题

一、问题描述使用zTree的异步刷新父级菜单时&#xff0c;服务器返回中文乱码&#xff0c;但项目中使用了SpringMvc&#xff0c;已经对中文乱码处理&#xff0c;为什么还会出现呢&#xff1f;此处为的异步请求的配置&#xff1a;Java代码async: {enable: true,url: basePath /s…

在命令提示符下输入的命令

ASSOC 显示或修改文件扩展名关联。ATTRIB 显示或更改文件属性。BREAK 设置或清除扩展式 CTRLC 检查。BOOTCFG 设置 boot.ini 文件的属性以便控制启动加载。CACLS 显示或修改文件的访问控制列表(ACL)。CALL 从另一个批处理…