文章目录

  • 一:分隔符
  • 二:super 关键字
  • 三:重写父类的方法可以实现
  • 四:继承后的垃圾清理
  • 五:接口进行向上转型操作的方式
  • 六:使用 this 关键字获取内部类与外部类的引用
  • 七:创建自定义异常的步骤:
  • 八:随机获取集合中的某个元素
  • 九:反射机制实现创建私有构造方法对象
  • 十丶泛型类型限制

一:分隔符

没有统一的对字符进行分割的符号,如果向定义多个分隔符,可使用符号“|”,例如,“,|=”表示分隔符分别为“,”和 “=”。

二:super 关键字

1、在子类中调用父类构造方法
2、在子类中调用父类成员方法(除了private修饰的都可以)

三:重写父类的方法可以实现

1、修改方法体内容
2、更改成员方法的存储权限
3、修改成员方法的返回值类型

四:继承后的垃圾清理

如果使用 finalize()方法对对象进行清理,需要确保子类 finalize()方法的最后一个动作是调用父类的 finalize()方法,以保证当垃圾回收对象占用内存时,对象的所有部分都能被正常终止。

五:接口进行向上转型操作的方式

用一段源代码来表示:

package chapter10;interface drawTest{        //定义接口public void draw();       //定义方法
}//定义平行四边形类,该类继承了四边形类,并实现了 drawTest 接口
class ParallelogramgleUselnterface extends QuadrangleUselnterface implements drawTest{public void draw() {      //由于该类实现了接口,所以需要覆盖draw()方法System.out.println("平行四边形.draw()");}
}//定义正方形类,该类继承了四边形类,并实现了 drawTest 接口
class SquareUselnterface extends QuadrangleUselnterface implements drawTest{public void draw() {System.out.println("正方形.draw()");}void doAnyThing() {}
}class AnyThingUselnterface extends QuadrangleUselnterface{void doAnyThing() {}
}public class QuadrangleUselnterface{       //定义四边形类public void doAnyTthing() {}public static void main(String[] args) {/*  精彩的部分开始 *///接口也可以进行 向上转型 操作drawTest[] d = {new SquareUselnterface(),new ParallelogramgleUselnterface()};//相当于//drawTest d2 = new SquareUselnterface();//drawTest d3 = new ParallelogramgleUselnterface();/*  精彩的部分结束 */for(int i=0;i<d.length;i++) {d[i].draw();       //调用 draw()方法}}}

我说一下我为什么能理解并想出跟下面两行代码是等价的:
还记得接口的概念吗,接口可以实现多重继承,那么其实实现了接口的类,那么这个类就是子类,而对接口而言他是这个类的父类
也就是说,接口就是里面这两个类的父类,所以它可以直接进行向上转型。
这里利用了多态特性和向上转型的原理,不会的一定要去好好搜一下资料理解一下,其实这里你理解了后会很有成就感真的,哇我现在就好爽!

所以说,你只要能理解下面两行代码可以向上转型给接口,就能理解上面那一行代码了。

六:使用 this 关键字获取内部类与外部类的引用

在类中,如果遇到内部类与外部类成员变量重名的情况,可以使用 this 关键字进行处理。

源代码:

public class TheSameName {private int x;private class Inner{private int x = 9;public void doit(int x) {x++;                   //调用的是形参 xthis.x++;               //调用内部类的变量xTheSameName.this.x++;  //调用外部类的变量x}}}

七:创建自定义异常的步骤:

1、创建自定义异常
2、在方法中通过throw 关键字抛出异常对象
3、如果在当前抛出异常的方法中处理异常,可以使用 try-catch 语句块捕获并处理,否则在方法的声明处通过 throws 关键字指明要抛出给方法调用者的异常,继续进行下一步操作。
4、在出现异常方法的调用者中捕获处理异常

源代码举例:

class MyException extends Exception{public MyException(String s) {   //构造方法super(s);     //父类构造方法}
}public class Tran {            //创建类static int avg(int number1,int number2) throws MyException{        //定义方法,抛出异常if(number1<0 || number2<0) {        //判断方法中参数是否满足指定条件throw new MyException("不可以使用负数");    //错误信息}if(number1>100 || number2>100) {       //判断方法中参数是否满足指定条件throw new MyException("数值太大了");  //错误信息}return (number1 + number2) / 2;     //将参数的平均值返回}public static void main(String[] args) {try {int result = avg(102,150);System.out.println(result);}catch(MyException e) {System.out.println(e);}}}

八:随机获取集合中的某个元素

int i = (int)(Math.random()*list.size()); //获得0~2之间对的随机数
此时i 代表了一个随机索引,然后利用list.get(i)就可以获取随机元素了

九:反射机制实现创建私有构造方法对象

Constructor 类中有两个方法
newInstance(Object…initargs):通过该构造方法利用指定参数创建一个该类的对象,如果未设置参数则表示采用默认无参数的构造方法
setAccessible(boolean flag):如果该构造方法的权限为 private,默认不允许通过反射利用 newInstance(Object…initargs)方法创建对象。如果先执行该方法,并将入口参数设为 true,则允许创建。
结合以上两个方法即可实现,例子如下:

 try {//通过执行默认没有参数的构造方法创建对象if(i==2)example = (Example_01) constructor.newInstance();else if(i == 1) //通过执行具有两个参数的构造方法创建对象example = (Example_01) constructor.newInstance("7",5);else {//通过执行具有可变数量参数的构造方法创建对象Object[] parameters = new Object[] {new String[] {"100","200","300"}};example = (Example_01) constructor.newInstance(parameters);}}catch(Exception e) {System.out.println("在创建对象时抛出异常,下面执行 setAccessible()方法");constructor.setAccessible(true);   //设置允许访问}

十丶泛型类型限制

泛型类型限制除了可以向下限制之外,还可以进行向上限制,只要在定义时使用 super 关键字即可。
举例:

     Test<? super List> b = null;这样定义后,对象a只接受List接口或上层父类类型。
如:       b = new Test<Object>();

Java学习之路 之 使用技巧篇相关推荐

  1. 【java学习之路】(javaWeb篇)008.VUE

    1. 学习目标 了解什么是框架 了解什么是Vue 掌握Vue的基本语法 了解Vue的生命周期 2. 内容讲解 2.1 什么是框架 任何编程语言在最初的时候都是没有框架的,后来随着在实际开发过程中不断总 ...

  2. 【java学习之路】(javaWeb篇)007.正则表达式专题

    正则表达式 1. 学习目标 掌握正则表达式的作用 掌握正则表达式的语法 了解常见的正则表达式 2. 内容讲解 2.1 正则表达式的概念 正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特 ...

  3. 【java学习之路】(javaWeb篇)001.HTML

    HTML HTML简介 概述:HTML(HeyperText MarkUp Language)全称称之为超文本标记语言,它是世界上最简单的语言, 在开发的时候我们只需要进行页面布局(利用标签:elem ...

  4. 【java学习之路】(javaWeb篇)006.构造函数、JQuery函数库

    构造函数 概述:在JavaScript语言当中也有所谓构造函数[constructor],JS当中构造函数要符合如下两个特征: 函数名字首个英文字母一般需要大写[不是决定形因素] 构造函数务必.必须. ...

  5. 【java学习之路】(javaWeb篇)005.Js之DOM、对象、函数上下文

    节点树 节点[element]即为标签 概述:静态页面骨架是由标签组成,标签之间关系很像一颗大树,简称为节点树. 如下图:静态页面标签之间关系图,很像一颗大树,因为前端人称之为节点树. 认识DOM 概 ...

  6. 【java学习之路】(javaWeb篇)002.CSS

    CSS样式 概述:CSS[Cascading Style Sheets]全称层叠样式表. 理解:可以把HTML文件想向成是一个房子骨架,里面标签(块元素.行内元素)理解为搭建房子转,CSS负责美化房子 ...

  7. 【java学习之路】(mysql篇)003.mysql中limit、表的创建、删除、约束

    limit limit作用 将查询结果集的一部分取出来.通常使用在分页查询当中 limit怎么用呢? 完整用法:limit startIndex, lengthstartIndex是起始下标,leng ...

  8. 【java学习之路】(mysql篇)001.mysql基本介绍、常用命令及简单查询

    什么是数据库? 数据库: 英文单词DataBase,简称DB.按照一定格式存储数据的一些文件的组合. 顾名思义:存储数据的仓库,实际上就是一堆文件.这些文件中存储了具有特定格式的数据. 什么是数据库管 ...

  9. 【java学习之路】(javaWeb篇)004.JavaScript part2

    函数 概述:在JavaScript脚本语言中也有函数概念,函数其实就是将某一个功能进行封装,当你事项用这个功能的时候,需要调用.执行这个函数 比如:我们在前面课程当中学习过一些内置函数 内置函数ale ...

  10. 个人开发经历--我的java学习之路(学校篇)

    个人开发经历--我的java学习之路(学校篇) 个人介绍: 姓名: 不在这里说明 联系信息: 个人历程 jdbc阶段 sql生成器 一代代码生成器 servlet阶段 servlet项目中,sql生成 ...

最新文章

  1. 3. SQL Server数据库状态监控 - 可用空间
  2. JAVA记录-Servlet RequestDispatcher请求转发
  3. linux常用命令大全(转)
  4. Hadoop生态圈以及各组成部分的简介
  5. Web前端开发笔记——第三章 CSS语言 第二节 CSS选择器
  6. springboot 页面下载文件 网页下载文件功能 文件放resourcce下面
  7. 12月13日 什么是help_method,session的简单理解, find_by等finder method
  8. 前端学习(672):if-else
  9. 基克的聚合 机器人_重做秒变神器!基克的聚合成辅助标配
  10. 会议报到和撒离时间算会期_【NKMUN2021】城市会议新模式:让心动成为可能
  11. mysql 事件 函数_MySQL 自定义函数和存储过程的使用
  12. 胡适:一个最低限度的国学书目
  13. Python3从零开始搭建一个语音对话机器人
  14. TCP协议-TCP粘包问题
  15. mt4的服务器在哪个文件,mt4的服务器地址
  16. 参考文献格式字号字体_字体字号格式要求
  17. 如何快速掌握技术和知识点
  18. Zemax学习笔记(12)- 扫描系统实例
  19. 爱企查显示,Keep赴港上市,冲击“线上健身第一股”
  20. 酒店管理与计算机未来的结合,智慧酒店:未来酒店发展新方向

热门文章

  1. SingalR 构建 推送服务器初探
  2. 学习日记day 10 : JavaScript秋风扫落叶第一期
  3. Homebrew基本命令
  4. openmv探索_2_追踪单颜色
  5. 医疗NLP相关数据集整理
  6. NLP的12种后BERT预训练方法
  7. 58 页 PPT 揭示图神经网络研究最新进展
  8. 【干货】python正则表达式应用笔记
  9. matplotlib—patches.Circle
  10. 深度学习2.0-18.随机梯度下降之手写数字问题实战(层)