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基础—笔记—多态、final、抽象类、接口篇
该文介绍了编程中的多态、final和抽象类、接口相关概念。多态允许子类重写父类方法,通过父类引用调用子类方法,实现解耦和提高代码灵活性,但也可能导致无法使用子类特有功能,需通过强制类型转换解决。final用于修饰不可变的类、方法或变量,防止继承、重写和多次赋值。抽象类是一种包含抽象方法的类,用于强制子类重写特定方法,实现多态,适用于模板方法设计模式,解决代码重复问题。
20 0
|
1月前
|
Java
Java基础—笔记—static篇
`static`关键字用于声明静态变量和方法,在类加载时初始化,只有一份共享内存。静态变量可通过类名或对象访问,但推荐使用类名。静态方法无`this`,不能访问实例成员,常用于工具类。静态代码块在类加载时执行一次,用于初始化静态成员。
12 0
|
1月前
|
Java API 索引
Java基础—笔记—String篇
本文介绍了Java中的`String`类、包的管理和API文档的使用。包用于分类管理Java程序,同包下类无需导包,不同包需导入。使用API时,可按类名搜索、查看包、介绍、构造器和方法。方法命名能暗示其功能,注意参数和返回值。`String`创建有两种方式:双引号创建(常量池,共享)和构造器`new`(每次新建对象)。此外,列举了`String`的常用方法,如`length()`、`charAt()`、`equals()`、`substring()`等。
16 0
|
2月前
|
消息中间件 架构师 NoSQL
咕炮课堂Java架构师课程
针对1-5年经验开发者,【Java架构师培训】聚焦互联网热门技术,如Redis、MongoDB、Dubbo、Zookeeper、Kafka,讲授高并发、高可用分布式解决方案。由资深讲师指导,提升技术水平。
30 2
咕炮课堂Java架构师课程
|
2月前
|
算法 搜索推荐 Java
数据结构与算法(Java篇)笔记--希尔排序
数据结构与算法(Java篇)笔记--希尔排序
|
22天前
|
JavaScript Java 测试技术
基于Java的学生课堂考勤系统的设计与实现(源码+lw+部署文档+讲解等)
基于Java的学生课堂考勤系统的设计与实现(源码+lw+部署文档+讲解等)
29 0
|
1月前
|
Java API
Java基础—笔记—内部类、枚举、泛型篇
本文介绍了Java编程中的内部类、枚举和泛型概念。匿名内部类用于简化类的创建,常作为方法参数,其原理是生成一个隐含的子类。枚举用于表示有限的固定数量的值,常用于系统配置或switch语句中。泛型则用来在编译时增强类型安全性,接收特定数据类型,包括泛型类、泛型接口和泛型方法。
12 0
|
2月前
|
Java
Java8 Stream流 使用笔记
Java8 Stream流 使用笔记
28 1
|
2月前
|
算法 搜索推荐 Java
数据结构与算法(Java篇)笔记--快速排序
数据结构与算法(Java篇)笔记--快速排序
|
2月前
|
机器学习/深度学习 算法 搜索推荐
数据结构与算法(Java篇)笔记--归并排序
数据结构与算法(Java篇)笔记--归并排序