构造器
特点:
- 和类名相同
- 没有返回值
作用:
- new 本质是在调用构造方法
- 初始化对象的值
注意点:
定义有参构造后,如果想要使用无参构造,需要显示的定义一个无参的构造方法
封装
封装其实就是对属性的修饰符的修改,修改为private,这样就无法直接通过对象调用里面的属性,提供了一定的安全性
当我们想要访问其中的属性时,我们可以通过编写get和set方法对属性进行拿和取
继承
继承的本质是对某一批类的抽象
通过关键字extends来进行继承
Java中只有单继承,没有多继承
继承是类于类之间的一种关系。除此之外,类与类之间的关系还有依赖、组合
聚合。
抽象类
- 不能new这个抽象类,只能够靠子类去实现它
- 抽象类中可以写普通的方法
- 抽象方法必须在抽象类中
- 抽象类同样也存在着构造器
- 抽象类的存在是为了提高开发的效率
接口
- 约束
- 定义一些方法,让不同的人去实现
- 定义的类相当于public abstract
- 定义的属性相当于静态变量public static final
- 接口不能够被实例化,接口中是没用构造方法的
- implements可以实现多个接口,和继承不同,父类能有多个子类,而子类只能有单个父类
- 接口的中的方法一定要重写
多态
存在的条件:
- 有继承的关系
- 子类重写父类方法
- 父类引用指向子类对象
注意:多态只是说的是方法的多态,而属性没有多态这一说法
父类和子类有联系
存在条件:继承关系,方法需要重写,父类引用指向子类对象
- static
- final
- private
这三个修饰的方法没有办法重写
异常
可以通过
try {
} catch (MyException e) {
}
来捕捉异常
对于一些想要通过自己自定义的异常可以通过以下方法创建
public class MyException extends Exception{
private int detail;
@Override
public String toString() {
return "数字过大错误" + detail ;
}
public MyException(int a) {
this.detail = a;
}
}
//当在方法中传入的参数为11时,程序进行if语句抛出异常,在main函数中被捕获,然后在MyException查到异常信息输出
public class Test {
public static void main(String[] args) {
try {
test(11);
} catch (MyException e) {
System.out.println("MyException"+e);
}
}
public static void test(int a) throws MyException {
System.out.println("传递的参数为"+a);
if(a>10){
throw new MyException(a);
}
System.out.println("OK");
}
}
在这个程序通过创建一个捕捉当输入大于10时所引起的异常,输出的结果为
传递的参数为11
MyException数字过大错误11
我们可以在My Exception中根据自己的需求修改自己想要输出的异常信息
throws和throw的区别:
throw:生成一个异常对象,并抛出,使用在方法内部 《——》自动抛出
throws:处理异常的方式,使用在方法声明处的末尾 《——》try—catch—finally