Java课堂笔记(下)

简介: 10.30java课堂笔记instanceof新特性抽象类如何实现多态重要概念:接口接口和抽象类的区别继承与组合面型对象的程序设计原则11.13课堂笔记java中的异常问题:java异常处理机制Final语句的问题链式异常更加精确的抛出异常反射与注解11.19 java课堂笔记OCP原则内部类局部内部类匿名内部类函数式编程lambda表达式

10.30java课堂笔记


instanceof新特性


检查对象是不是指定的类型,通常在将父类引用强制转换为子类引用的时候使用


抽象类


封装、继承、多态、抽象是JAVA四大特性,不能明确描述的要进行抽象


在某一层次,没有具体的状态,不能具体地进行描述,所以要进行初始化


为了系统的可拓展性,就要进行抽象


语法 abstract 修饰类、方法叫做抽象类,抽象方法


抽象方法的好处是多态。


抽象类除了被继承之外,没有别的用途


如果一个非抽象类是某一个抽象类的子类,他必须重写父类中所有抽象方法!!!


抽象方法只需声明,无需实现


子类对抽象方法的重写,不能降低访问权限


如何实现多态


抽象可以屏蔽一切变化


重要概念:接口


一个类可以有多个接口。接口克服了单继承的缺点。


接口不是类层次结构的一部分,接口可以看作是一种规则和约束。


一个类在继承另一个类的同时,还可以实现多个接口


声明接口 :


具体使用interface


page 113


public interface interfaceName


抽象方法当然定义格式 : returnType


接口中方法默认使用public & abstract(可以省略)


java中的implement


接口回调(接口类型的使用)


两种方法: 接口做上转型,接口做参数


接口不是类,不能进行实例化一个接口,只能实例化它的实现类


接口的默认方法(拓展方法)


主要是提供一种拓展方法


默认重写加上public,去掉default


多级继承


默认方法支持行为的多级继承


类实现的优先级别高于接口的默认实现


接口和抽象类的区别


1.抽象层次


2.建模关系


3.设计层次


尽量以interface取代abstract class


interface 可以用来构建非层次类型框架,减少因继承带来的束缚


继承与组合


优先考虑继承,然后才是组合,因为继承破坏了封装性


提倡在一个package中进行继承,跨越package的是不建议的


面型对象的程序设计原则


page 123


11.13课堂笔记


java中的异常问题:


异常的的分类:

微信图片_20220608191358.png

好博客

RuntimeException以及Error 是非受查异常,CheckException 是受查异常


java异常处理机制


1.捕获异常


try-catch-finally


2.声明异常


throws


3.抛出异常


throw


抛出的异常必须是Throwable或者是其子类的实例才可以抛出异常


Throwable中API的用法


getMessage() && toString() 方法


异常栈轨迹


Final语句的问题


final语句中抛出的异常以及跳转语句会覆盖try中抛出的异常


避免使用final


链式异常


通过链式异常可以为异常关联另一个异常,第二个异常描述第一个异常的原因,称为引发异常或者是背后异常


带有资源的try语句(io读取文件等)


try with resources;


更加精确的抛出异常


隐匿异常对象的栈轨迹


filllnStackTrace() 方法


反射与注解


反射:


能够在运行时了解对象的一切信息,比如:父类型,方法,字段,构造方法等,还可以动态生成对象,改变权限


这种结果就是通过反射得到的


.class字节码文件


java.lang.Class;


字节码对象的创建:共三种方法


Role.calss;

对象.getClass();

Class.forName("")


class获取构造函数四个方法分两组


详解博客


在使用反射的时候,常用到的几个方法老是傻傻的分不清楚是干吗的,功能差不多的啊,

比如:

Class.getFields();
Class.getField(String);
Class.getDeclaredFields();
Class.getDeclaredField(String);
Class.getMethods();
Class.getMethod(String, Class[]);
Class.getDeclaredMethods();
Class.getDeclaredMethod(String, Class[]);

主要的就是有没有Declared单词的区别,

经过仔细研究有Declared单词的是获取的是某个类自己定义的成员,包括公开的,私有的,保护的等等的字段或方法,

如果没有Declared单词的一般都是获取某个类所拥有的所有公开的成员,包括自己定义的和继承下来的公开成员,如公开的字段和继承的公开的方法.


主要的就是有没有Declared单词的区别,

经过仔细研究有Declared单词的是获取的是某个类自己定义的成员,包括公开的,私有的,保护的等等的字段或方法,


如果没有Declared单词的一般都是获取某个类所拥有的所有公开的成员,包括自己定义的和继承下来的公开成员,如公开的字段和继承的公开的方法.


先获取构造函数类型,在通过构造函数获取新的对象newInstance


class…///泛型


…表示不定长


获取成员变量field


获取任意指定名字的成员


public Field getDeclaerFields();

field封装的方法


get();

getInt();

getShort();


获取数组:


数组容量动态调整


11.19 java课堂笔记


OCP原则


抽象意味着一切皆有可能


用对象组合代替继承


内部类


课本第118页


面向对象的基石:抽象 abstraction


静态内部类,非静态内部类,局部内部类,匿名内部类


内部类可以定义为:abstract public private default protected,可以加入任意的访问权限


内部类都是一个独立的类


静态内部类只能访问内部类的静态变量或者是静态方法,非静态的不能访问


可以实现顶层类的内部接口


局部内部类


在一个方法中实现,因此也叫方法内部类,不能用访问修饰符修饰


局部内部类不能从方法外访问


匿名内部类


匿名类没有名字,只能用一次,出现在表达式的一条语句中


new[类A OR 接口A()]{


}


得到的匿名类是类A的子类(可以继承A的成员或者是重写继承的方法),或者是实现接口A的类(在匿名类中实现接口的抽象方法)


内部类可以很好地实现隐藏,降低外部耦合性,更好地实现封装性


内部类拥有外围类的所有元素的访问权限


实现多重继承,单继承之后的类再继承一个内部类,就可以实现多继承的效果


避免修改接口而实现同一个类中两种同名方法的调用,用内部类去实现一个接口


函数式编程


lambda表达式


8.0提出


把函数作为参数进行传递


©PushyTao


目录
相关文章
|
1月前
|
存储 Java 开发者
【潜意识Java】深入详细理解分析Java中的toString()方法重写完整笔记总结,超级详细。
本文详细介绍了 Java 中 `toString()` 方法的重写技巧及其重要
56 10
【潜意识Java】深入详细理解分析Java中的toString()方法重写完整笔记总结,超级详细。
|
1月前
|
前端开发 JavaScript Java
Java构建工具-maven的复习笔记【适用于复习】
这篇文档由「潜意识Java」创作,主要介绍Maven的相关知识。内容涵盖Maven的基本概念、作用、项目导入步骤、依赖管理(包括依赖配置、代码示例、总结)、依赖传递、依赖范围以及依赖的生命周期等七个方面。作者擅长前端开发,秉持“得之坦然,失之淡然”的座右铭。期待您的点赞、关注和收藏,这将是作者持续创作的动力! [个人主页](https://blog.csdn.net/weixin_73355603?spm=1000.2115.3001.5343)
43 3
|
2月前
|
安全 Java 编译器
Kotlin教程笔记(27) -Kotlin 与 Java 共存(二)
Kotlin教程笔记(27) -Kotlin 与 Java 共存(二)
|
2月前
|
Java 开发工具 Android开发
Kotlin教程笔记(26) -Kotlin 与 Java 共存(一)
Kotlin教程笔记(26) -Kotlin 与 Java 共存(一)
|
3月前
|
Java 编译器 Android开发
Kotlin教程笔记(28) -Kotlin 与 Java 混编
Kotlin教程笔记(28) -Kotlin 与 Java 混编
64 2
|
3月前
|
安全 Java 编译器
Kotlin教程笔记(27) -Kotlin 与 Java 共存(二)
Kotlin教程笔记(27) -Kotlin 与 Java 共存(二)
|
2月前
|
Java 数据库连接 编译器
Kotlin教程笔记(29) -Kotlin 兼容 Java 遇到的最大的“坑”
Kotlin教程笔记(29) -Kotlin 兼容 Java 遇到的最大的“坑”
94 0
|
3月前
|
Java 开发工具 Android开发
Kotlin教程笔记(26) -Kotlin 与 Java 共存(一)
Kotlin教程笔记(26) -Kotlin 与 Java 共存(一)
|
3月前
|
Java 编译器 Android开发
Kotlin教程笔记(28) -Kotlin 与 Java 混编
Kotlin教程笔记(28) -Kotlin 与 Java 混编
27 0

热门文章

最新文章