scanner
break和continue
break用于强制退出循环,不执行循环中剩余的语句
continue 用于终止某次循环过程,即跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判定。
方法的重载
重载是在同一个类中,有相同的函数,但形参不同的函数。
方法重载的规则:
- 方法名称必须相同。
- 参数列表必须不同(个数不同,或类型不同,参数排列顺序不同等)。
- 方法的返回类型可以相同也可以不相同。
- 仅仅返回类型不同不足以成为方法的重载。
实现理论:
方法名称相同时,编译器会根据调用方法的参数个数,参数类型等去逐个匹配,以选择对应的方法,如果匹配失败,则编译器报错。
递归
调用少可行,调用太多不建议。 (Java是用栈进行存储)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-epwJ1P15-1599304887104)(C:\Users\zwq\Desktop\note\image\java流程\数组.png)]
面向对象
本质:以类的方式组织代码,以对象的组织(封装)数据。
三大特性:封装,继承,多态
构造器
Person person = new Person();
构造器:
- 和类名相同
- 没有返回值
作用:
- new 本质在调用构造方法
- 初始化对象的值
注意点:
- 定义有参构造之后,如果想使用无参构造,显示的定义一个无参的构造
static 静态方法区,和类一起加载(其它可以直接调用)
封装
高内聚,低耦合
高内聚就是类内部数据操作细节自己完成,不允许外部干涉;低耦合:仅暴露少量的方法给外部使用。
封装(数据的隐藏):通常,应禁止直接访问一个对象中数据的实际表示,而应通过操作接口来访问,这称为信息隐藏。
属性私有,get/set
意义:
- 提高程序的安全性,保护数据
- 隐藏代码的实现细节
- 统一接口
- 系统可维护增加了
继承
继承的本质是对某一批类的抽象,从而实现对现实世界更好的建模。
关键字 extends 子类是父类的扩展。
Java中类只有单继承,没有多继承。
-
继承是类和类之间的一种关系,除此之外,类和类之间的关系还有依赖,组合,聚合等。
-
继承关系的两个类。一个为子类(派生类),一个为父类(基类),子类继承父类,使用关键字extends来表示。
-
子类和父类之间,从意义上讲应该具有“is a”的关系。
object类
super
- super调用父类的构造方法,必须在构造方法的第一个
- super必须只能出现在子类的方法或者构造方法中!
- super和this不能同时调用构造方法!
VS this:
代表的对象不同:
this: 本身调用者这个对象
super:代表父类对象的应用
前提
this:没有继承也可以使用
super:只能在继承条件才可以使用
构造方法
this();本类的构造
super();父类的构造
重写
重写:需要有继承关系,子类重写父类的方法!
- 方法名必须相同
- 参数列表必须相同
- 修饰符:范围可以扩大不可以缩小; public>protected>default>private
- 抛出的异常:范围,可以被缩小,但不能扩大 ClassNotFoundException -->Exception(大)
重写,子类的方法和父类必须一致,方法体不同。
为什么需要重写: 父类的功能,子类不一定需要,或者不一定满足!
Person s = new student();//父类的引用指向子类
对象能执行的方法名主要看对象左边的类型,和右边关系不大。
多态
即同一方法可以根据发送对象的不同而采用多种不同的行为方式。
一个对象的实际类型是确定的,但可以指向对象的引用的类型有很多
多态存在的条件
- 有继承关系
- 子类重写父类方法
- 父类引用指向子类对象
注意事项:
-
多态是方法的多态,属性没有多态
-
父类和子类,有联系,类型转换异常!ClassCastException!
-
存在条件:继承关系,方法需要重写,父类引用指向子类对象! Father f1 = new Son();
-
static 方法,属于类,它不属于实例
-
final 常量
-
private 方法
-
父类引用指向子类对象
-
把子类转换为父类,向上转型;
-
把父类转换为子类,向下转型;强制转换
-
方便方法的调用,减少重复的代码,简洁
static 在类加载时先加载,且只会执行一次
final类无法被继承
抽象类
abstract修饰符可以用来修饰方法也可以修饰类,如果修饰方法没那么该方法就是抽象方法;如果修饰类,那么该类就是抽象类。
抽象类中可以没有抽象方法,但是有抽象方法的类一定要声明为抽象类。
抽象类,不能使用new关键字来创建对象,它是用来让子类继承的。
抽象方法,只有方法的声明,没有方法的实现,他是用来让子类实现的。
子类继承抽象类,那么必须要实现抽象类没有实现的抽象方法,否则该子类也要声明为抽象类。
接口
interface
作用:
- 起到约束的作用,并不去实现
- 定义一些方法,让不同的人实现
- 定义的方法都是 public abstract
- 定义的常量都是 public abstract final
- 接口不能被实例化,接口中没有构造方法
- implements 可以实现多个接口
- 必须要重写接口中的方法
异常
- 在方法中通过throw关键字抛出异常对象。
- 如果在当前抛出异常的方法中处理异常,可以使用try-catch语句捕获并处理;否则在方法的声明处通过throws关键字指明要抛出给方法调用者的异常,继续进行下一步操作。
- 在出现异常方法的调用者中捕获并处理异常。
实际经验总结:
- 处理运行时异常时,采用逻辑去合理规避同时辅助 try-catch 处理
- 在多重catch块后面,可以加一个catch(Exception)来处理可能被遗漏的异常
- 对于不确定的代码,也可以加上try-catch,处理潜在的异常
- 尽量去处理异常,切忌只是简单地调用printStackTrace()去打印输出
- 具体如何处理异常,要根据不同的业务需求和异常类型去决定
- 尽量添加finally语句块去释放占用的资源