一,抽象
关键字:abstract
此关键字修饰方法为抽象方法,修饰类为抽象类。但不能修饰属性,构造器,私有方法,静态方法,final修饰的方法
1)抽象类
抽象类的定义语法:访问修饰符 abstract class A{ }
一旦A类被抽象了就不能造对象了,但一定还有构造器便于子类造对象用,开发中都会提供抽象类的子类来造对象。
2)抽象方法
抽象类的定义语法:访问修饰符 abstract void A( ) ;
注意:没有花括号,没有方法体
3)抽象类,抽象方法说明
>包含抽象方法的类一定是抽象类,单抽象类中可以没有抽象方法
>子类重写父类中所有的抽象方法后方可实例化,若没有重写或重写完则子类也是抽象类需要用abstract来修饰
二,接口
关键字:interface 接口, implements 实现
面向接口编程就是先把客户的业务逻辑线提取出来,作为接口,业务具体实现通过该接口的实现类来完成。当客户需求变化时,只需编写该业务逻辑的新的实现类,替换该接口的实现类就可以完成需求,不需要改写现有代码,减少对系统的影响。
优点:降低代码间的耦合性易于程序的扩展,提高了程序的可扩性性,提高了程序的可维护性
定义接口的语法:
[访问修饰符] interface 接口名 extends 父接口1,父接口2,…{
//常量定义
//方法定义
}
类实现接口的语法:
[访问修饰符] class 类名 extends 父类名 implements 接口1,接口2,…{
//类成员
}
1)接口特性
2)类图展示

3)抽象类和接口的联系和区别?
相同点:
不同点:
4)接口在说明
>与类属于同一级别,可以实现多继承效果父类只能有一个,但接口可以有多个
>JDK7及以前接口只能定义(public static final)修饰的全局常量和(abstrack)修饰的抽象方法。
JDK8以后接口还可以定义静态方法,和默认方法
>开发中接口通过让类去实现使用,如果实现类实现了接口中的所有抽象方法,则就可以实例化
class A extend B implements C , D , E
A类继承B类实现C,D,E接口
>可以通过:接口 . super . 方法 在子类实现类中调用接口中的方法
5,案例
package com.bdqn.lianxi;
public class jiekou {//测试类
public static void main(String[] args) {
Computer computer = new Computer();
//创建接口非匿名实现类的非匿名对象
printer prin = new printer();
computer.transferDate(prin);
//创建接口非匿名实现类的非匿名对象
Flash flash = new Flash();
computer.transferDate(flash);
System.out.println("**************************");
flash.start();
flash.stop();
//创建接口非匿名实现类的匿名对象
computer.transferDate(new printer());
//创建接口的匿名实现类的非匿名对象
USB phone = new USB() {
@Override
public void start() {
System.out.println("手机开始工作");
}
@Override
public void stop() {
System.out.println("手机结束工作");
}
};
computer.transferDate(phone);
//创建接口的匿名实现类的匿名对象
computer.transferDate(new USB() {
@Override
public void start() {
System.out.println("mp3开始工作");
}
@Override
public void stop() {
System.out.println("mp3结束工作");
}
});
}
//___________________________________________________________________________________________
static class Computer{//电脑
public void transferDate(USB usb){
usb.start();
System.out.println("具体的传输数据的细节");
usb.stop();
}
}
//___________________________________________________________________________________________
interface USB{//接口
void start();
void stop();
}
//___________________________________________________________________________________________
static class Flash implements USB{//实现接口-----优盘
@Override
public void start() {
System.out.println("优盘开启工作");
}
@Override
public void stop() {
System.out.println("优盘结束工作");
}
}
//___________________________________________________________________________________________
static class printer implements USB{//打印机
@Override
public void start() {
System.out.println("打印机开始工作");
}
@Override
public void stop() {
System.out.println("打印机结束工作");
}
}
}
三,异常
1)异常种类,常见异常类型
Thowable-----------------------------------------------------------------------
Error------------------------------------------------------------------
Exception-----------------------------------------------------------
checked-------------------(编译时异常)--------
unchecked---------------(运行时异常)-------------
常见异常类型

2)处理异常
抓抛模型
2.1 ; try - cath - finally
关键字 , try - cath - finally
/* try {
可能出现异常的代码
}catch(异常类型 变量名){
处理异常方式
}catch(异常类型 变量名){
处理异常方式
}catch(异常类型 变量名){
处理异常方式
}finally{
一定会执行的代码
}*/
异常类型如果有父子类关系要求子类必须声明在父类上面
catch中处理异常常写 变量名 . printstackTrace() 变量名 . getMessage()
2.2 ;throws throw
关键字:throws(抛出异常) throw(制造异常)
格式
public void num()throws (异常类型),(异常类型),...........,(异常类型){
方法体
}
谁调这个方法就抛给谁
public void setSex(String sex) throws Exception {
if ("男".equals(sex) || "女".equals(sex))
this.sex = sex;
else {
throw new Exception(“性别必须是\"男\"或者\"女\"!");
}
}
throw 通常跟 throws一起用
2.3自定义异常类
/**
* 自定义异常类
*/
public class AgeException extends Exception{//AgeException继承与一个异常类
public AgeException() {
}
public AgeException(String message) {
super(message);
}
}
三,重写方法抛异常
>子类重写的方法抛出的异常类型不大于父类被重写的方法抛出的异常类型
>如果父类中被重写的方法没有抛异常(throws)则子类中重写的方法也不能用(throws)抛异常如果出现异常就需要用try - catch来解决
>如果几个类是递进关系先都throws抛出来在try - catch
本文详细探讨了Java中的抽象类与抽象方法,接口的使用及其优势,以及异常处理的最佳实践。包括抽象类的定义、接口的多继承特性、异常种类和处理方式,以及重写方法时的异常规则。

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



