java整理(三)
1.继承性:继承已有的功能。使用extends关键字。class 子类 extends 父类{}
子类又被称为派生类,父类又被称为超类。
继承的限制:
1.java中,不允许多重继承,即一个子类只能继承一个父类。一个C子类,想同时继承A和B,不可以多重继承,可以多层继承。class A{}class B extends A{}class C extend B{}
2.子类继承的时候,将父类的内容全部继承下来,一下两点区别:所有的非私有操作采用显式继承。(子类可以直接使用)。所有的私有操作采用隐式继承(子类可以间接操作,可以通过方法操作)。
3.子类对象在进行实例化之前,会默认调用父类中的无参构造方法,为父类属性分配空间,之后再调用子类自己的构造方法,为本类属性分配空间。
2.覆写
继承关系发生后,对于子类而言很有可能定义了与父类相同的方法或者属性,这个时候就会发生覆写的问题,当然覆写分为:方法的覆写和属性的覆写。
方法的覆写就是子类定义了与父类相同的方法的时候(方法名称相同,参数的类型或个数相同、返回值类型相同)。
覆写的时候要注意权限问题,被子类所覆写的方法不能拥有比父类更严格的访问控制权限。(就开发而言,在开发之中,基本上的方法90%都是使用public权限定义的)
this和super的操作范围:
this.方法()指的是调用本类的方法,如果本类中不存在此方法再从父类中查找使用;
super()方法指的是直接调用父类中的方法,不再查找子类。
属性的覆写:其实没有意义,因为属性必须封装,封装之后就无法覆写了。
覆写和重载的区别
|
NO. |
区别 |
重载 |
覆写 |
|
1 |
单词 |
OverLoading |
Override |
|
2 |
概念 |
方法名称相同,参数的类型或个数不同 |
方法名称,返回值类型、参数的个数及类型全部相同 |
|
3 |
范围 |
发生在同一个类之中 |
发生在继承关系中 |
|
4 |
权限 |
重载的时候没有权限设置 |
子类覆写的方法不能拥有比父类更严格的访问控制权限 |
this和super的区别
|
NO. |
区别 |
this |
super |
|
1 |
属性 |
this.属性指的是找到本类的属性,如果本类没有找到则继续查找父类 |
super.属性直接在子类之中查找父类中的指定属性,不再查找子类本身 |
|
2 |
方法 |
This.方法()指的是找到本类的方法,如果本类没有找到则继续查找父类 |
Super.方法()直接在子类之中查找父类中的指定方法,不再查找子类本身 |
|
3 |
构造 |
都必须放在构造方法的首行,所以两个操作不能同时出现 |
|
|
4 |
特殊 |
表示当前对象 |
|
3.final关键字
final 可以定义类、属性、方法。
1.使用final定义类:意味着这个类不能有子类,就是一个太监类(个人定义的不多,系统类上经常出现)
2.final定义方法:方法不能被子类覆写,在开发中很少直接编写。
3.final定义的变量成为常量,内容不可改变,而且必须在定义的时候为其设置内容。
java整理(三)的更多相关文章
- 20165324 Java实验三 敏捷开发与XP实验
20165324 Java实验三 敏捷开发与XP实验 一.实验报告封面 课程:Java程序设计 班级:1653班 姓名:何春江 学号:20165324 指导教师:娄嘉鹏 实验日期:2018年4月16日 ...
- Java EE : 三、图解Session(会话)
目录 Java EE : 一.图解Http协议 Java EE : 二.图解 Cookie(小甜饼) Java EE : 三.图解Session(会话) 概述 一.Session由来 二.Sessio ...
- JAVA第三周作业(从键盘输入若干数求和)
JAVA第三周作业(从键盘输入若干数求和) 在新的一周,我学习了JAVA的IO编程.下面的代码实现了从键盘输入若干数求和的目标.import java.util.Scanner; public cla ...
- 编程语言性能游戏排行榜,C/C++第一ATS第二JAVA第三
编程语言性能游戏排行榜,C/C++第一ATS第二JAVA第三 编程语言性能游戏排行榜,C/C++第一ATS第二JAVA第三
- Java的三种代理模式
Java的三种代理模式 1.代理模式 代理(Proxy)是一种设计模式,提供了对目标对象另外的访问方式;即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩 ...
- Java的三种代理模式简述
本文着重讲述三种代理模式在java代码中如何写出,为保证文章的针对性,暂且不讨论底层实现原理,具体的原理将在下一篇博文中讲述. 代理模式是什么 代理模式是一种设计模式,简单说即是在不改变源码的情况下, ...
- Java进阶(三十九)Java集合类的排序,查找,替换操作
Java进阶(三十九)Java集合类的排序,查找,替换操作 前言 在Java方向校招过程中,经常会遇到将输入转换为数组的情况,而我们通常使用ArrayList来表示动态数组.获取到ArrayList对 ...
- Java进阶(三十八)快速排序
Java进阶(三十八)快速排序 前言 有没有既不浪费空间又可以快一点的排序算法呢?那就是"快速排序"啦!光听这个名字是不是就觉得很高端呢. 假设我们现在对"6 1 2 7 ...
- Java进阶(三十七)java 自动装箱与拆箱
Java进阶(三十七)java 自动装箱与拆箱 前言 这个是jdk1.5以后才引入的新的内容.java语言规范中说道:在许多情况下包装与解包装是由编译器自行完成的(在这种情况下包装称为装箱,解包装称为 ...
- Java进阶(三十六)深入理解Java的接口和抽象类
Java进阶(三十六)深入理解Java的接口和抽象类 前言 对于面向对象编程来说,抽象是它的一大特征之一.在Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类.这两者有太多相似的地方,又有太 ...
随机推荐
- Python中进度条如何实现
print源码,参数end默认值为换行符,需要置成空,就会实现打印一行的效果 import time for i in range(100): time.sleep(1)#sleep一秒再输出 # 需 ...
- JavaUtil_08_StringUtil_commons-lang3 之 StringUtils
二.参考资料 1.[commons]字符串工具类——commons-lang3之StringUtils
- 【HDU 6428】Calculate 莫比乌斯反演+线性筛
题解 代码 #include <bits/stdc++.h> using namespace std; typedef long long ll; const ll mod = 1LL&l ...
- Maven发布项目丢失Mybatis Mapper包的映射问题
由于一些eclipse版本问题,mybatis的mapper包中的sql文件没有被打进包,需要在pom中加入: <build> <!--配置打包时不过滤非java文件开始 --> ...
- 浅谈MVC、MVP、MVVM模式
mvc的模式已经深入人心,想必大家都很熟悉,但是未必都能遵守mvc模式.我们的一个mvc项目比较简单,主要是数据库的查询.一个DBHelp类,封装了数据库的操作,然后Controller中进行中各种查 ...
- C#中怎么解析JSON数据,并获取到其中的值?
[1]首先我们根据创建一个json字符转 string json = @"[{'phantom':true,'id':'20130717001','data':{'MID':1019,'Na ...
- C#实现读写文本文件中的数据
[1]首先我们定义一段假数据,这里以一个string为例字 static void Main(string[] args) { string data = &quo ...
- 安装ORACLE时在Linux上设置内核参数的含义
前两天看到一篇Redhat官方的Oracle安装文档,对于Linux内核参数的修改描述的非常清晰. 安装Oracle之前,除了检查操作系统的硬件和软件是否满足安装需要之外,一个重点就是修改内核参数,其 ...
- python中文件打开的各个标识含义
w代表清空后写入 r代表打开后追查 +代表可以写 b代表二进制写入
- [转]unity3d中创建双面材质
在其它三维软件中设置好的双面材质导入到unity3d中就失去了效果,不过我们可以通过自定义材质来在unity3d中实现双面材质的效果.步骤如下:1.在资源库中新建一新shader:代码如下: Shad ...