1.介绍final关键字:
final 最终的 ,是一个修饰符,可以修饰 变量,方法,类
[修饰变量:基本数据类型 ,引用数据类型]
final int A=9; 基本数据类型 值不可以变。
final Teacher t=new Teacher("张三",34,”男",10);
final修饰的引用数据类型 地址不可以变;属性值可以改变。
修饰方法:程序想要告诉子类,该方法已经写得非常好了,子类不要再重写。
修饰类:程序想要告诉其他类,不能继承我,就把该类设置为 final 修饰的最终类。
2.抽象类 和 抽象方法:
【学习抽象类的原因】:仅仅是因为,父类没有创建对象的必要,就不让父类创建对象了。
所以,直接把父类设置为抽象类,抽象类就不能创建对象了(不能调用构造方法了,父类还依然有构造方法)
public abstract class Person { }
【学习抽象方法的原因】:
父类里的某一方法,需要子类 [必须]重写,
只需要把父类中的方法 设置为抽象方法,子类就必须重写了。
如果子类不重写,子类也必须成为 抽象类。
public abstract void show();
总结:有抽象方法的类 一定是抽象类; 但是 抽象类不一定有抽象方法;
3.接口
学习接口的原因? ---为了解决java的单继承问题。接口可以多实现
什么是接口? 具有相同[行为]的多组对象的集合 叫接口
使用接口:
A.创建/定义接口
public interface IFly {
}
B.使用接口:
public class A interface IFly{ }
4.接口 VS 抽象类 区别与联系:
相同点;
都不能new对象;
都可以被一个类继承或实现,使该类扩增方法
都可以抽象方法和非抽象方法
不同点:
语法:
1.单继承 多实现
2.声明关键字不同 class interface;
3.一个extends ,implements
4.类里可以有变量也可以有常量;
接口里只能有静态常量
语义:
一个代表 is-a 是的关系,比如:大象是动物
一个代表 has-a 有/能 的关系,比如:我能游泳
5.异常处理机制:---保证程序不终止
学习目的:需要保证程序在运行的时候,不会因为某一个错误,导致程序终止;
异常继承结构图:
Object
|
Throwable
Error(错误) Exception(异常)
error不是开发者 检查时异常CheckedException 运行时异常RuntimeException
可以解决的, 编码期,必须处理否则程序无法启动 运行期, 可以不处理,程序也可以启动
一般比较严重 ParseException , NullPointerException
ClassNotFoundException, ArrayIndexOutOfBoundsException
FileNotFoundException ClassCastExceptionI(类型转换异常)
6.异常处理的两种方式,借助5个关键字 来实现: try ,catch,finally,throw,throws
第一种处理方式 【这个问题 我解决不了】:throws --> public static void main(String[] args) throws Exception{
第二种处理方式 【这个问题我能解决】:try ---catch---catch--catch--finally
制造异常:throw ---本身程序没有错误,为了提醒!制造异常
try{---监控程序/代码
int num1 = input.nextInt();---由于用户输入不正确的内容,导致程序出错!
此时程序内部,会产生一个InputMismatchException 类型的对象。
并抛出,逐一找catch中对应的类型,直到匹配。
}catch(InputMismatchException i){
}catch(XXXXException i){ //处理问题的/记录问题的 ---;类型匹配后 ,进入到catch块里执行 问题解决的代码
}catch(xXXException i){
}catch(Exception i){
}finally{ //善后工作, 一般都是关闭资源
}
throw: 抛出异常/产生异常===>提醒开发者
setAge(int age){
if(age>=0 && age<=100){
this.age=age;
}else{
this.age=20;
//sout("年龄在0-100之间")
throw new RuntimeException("年龄在0-100之间");
}
}
7.自定义异常类:
因为没有一款异常类型是符合 逻辑错误非语法错误,如果开发中我们需要,就只能自己手动创建l
public class SetAgeException extends RuntimeException {
public SetAgeException(String mess){
super(mess);
}
}
8.Throw 和 Throws 的区别:
throw和throws的区别:
(1)位置不同:
throw:方法内部
throws: 方法的签名处,方法的声明处
(2)内容不同:
throw+异常对象(检查异常,运行时异常)
throws+异常的类型(可以多个类型,用,拼接)
(3)作用不同:
throw:异常出现的源头,制造异常。
throws:在方法的声明处,告诉方法的调用者,这个方法中可能会出现我声明的这些异常。然后调用者对这个异常进行处理:
要么自己处理要么再继续向外抛出异常
try---监控异常
catch---捕获异常
finally---关闭资源
throws---声明异常
thow---抛出异常

被折叠的 条评论
为什么被折叠?



