07-16

一 抽象类

使用abstract修饰符就变成了抽象类和抽象方法

  • 抽象方法只有方法声明,没有方法体.

  • 继承抽象类的子类,都要必须实现抽象类的抽象方法,除非子类也是抽象类.

  • 抽象方法声明一";"结尾.

  • 构造方法 静态成员方法不能被声明为抽象方法

Java的类是单继承的,但是接口可以是多继承的

抽象类特点:

  1. 不能new这个抽象类,只能靠子类去实现它:抽象类起到约束(框架作用)!!!

  2. 抽象类可以写普通方法,但是抽象方法必须在抽象类中.

抽象方法的作用 不仅使子类具有相同的行为能力,还能实现运行时多态:“一直声名,多种实现”.

二 接口(重点)

关键词 : interface

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pK2scIdP-1626442433132)(C:\Users\77647\AppData\Roaming\Typora\typora-user-images\image-20210716063331744.png)]

2.1 接口

package com.oop2;

public interface Calchulator {//关键词 : interface
    public abstract void add(int x);//抽象方法,默认修饰符为public abstract
    void pow(int y);
    void multiple(int x,int y);
}

2.2 实现类

    Package com.oop2;

public class Calimp implements Calchulator{//类Calimp 实现 Calchulator接口
    @Override
    public void add(int x) {//与之前学的抽象类类似,需要实现接口定义的抽象方法

    }

    @Override
    public void pow(int y) {

    }

    @Override
    public void multiple(int x, int y) {

    }
}


2.3 接口与抽象类

相同点:

都起到约束作用

不同点:

  • 接口约束它的实现类,而抽象类约束它的子类
  • 子类只能继承一个父类,所以一个子类只能被一个抽象类约束.
  • 而实现类可以实现多个接口,这是相比于抽象类的优势.

2.4 总结

  1. 接口起到约束作用
  2. 定义一些方法,让不同的人实现
  3. 接口中的方法默认修饰符为 public abstract
  4. 接口中成员变量必须为常量,且必须赋值,默认修饰符为 public static final,不能声明为实列成员变量
  5. 接口不能被实列化,因为接口不是类,它是没有构造方法的
  6. implements 实现多个接口
  7. 实现类必须实现接口中的方法

三 内部类

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kXm5RBfc-1626442433138)(C:\Users\77647\AppData\Roaming\Typora\typora-user-images\image-20210716103759372.png)]

四 内部类

内部类分为 : 成员内部类 静态内部类 局部内部类 匿名内部类

4.1 成员变量类

两个类套娃

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yTfVfFa9-1626442433140)(C:\Users\77647\AppData\Roaming\Typora\typora-user-images\image-20210716133610354.png)]

4.2 静态内部类

里面的类加static修饰

4.3 局部内部类

在方法中定义的类,类似于局部变量(在方法中定义的量)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bj1ZGyym-1626442433143)(C:\Users\77647\AppData\Roaming\Typora\typora-user-images\image-20210716134332583.png)]

4.4 匿名内部类

五 异常机制

4.1 try-catch-finally

Exception : 异常

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jXoEIwSz-1626442433144)(C:\Users\77647\AppData\Roaming\Typora\typora-user-images\image-20210716105635243.png)]

错误Error比Exception要严重得多

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QQb9Wxew-1626442433145)(C:\Users\77647\AppData\Roaming\Typora\typora-user-images\image-20210716110557171.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dypq1Rh9-1626442433146)(C:\Users\77647\AppData\Roaming\Typora\typora-user-images\image-20210716110615667.png)]

package com.oop2;

public class Main {
    public static void main(String[] args) {
        int a=10;
        int b=0;

        try{
            System.out.println(a/b);//存在潜在异常的语句
        }
        catch(ArithmeticException e){//(异常类 异常对象),异常类填Throwable也可以
            System.out.println("出现异常,程序b不能为0");//捕获异常对象并要进行的操作
        }
        finally{
            System.out.println("程序结束!");//无论是否抛出异常,是否捕获到异常,最后都要执行的语句;当然,可以没有finally
        }
    }
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Hg6E3TxM-1626442433147)(C:\Users\77647\AppData\Roaming\Typora\typora-user-images\image-20210716120445404.png)]

选中可能出现异常的语句,按 ctrl+alt+t 自动生成 try-catch-finally 语句

package com.oop2;

public class Main {
    public static void main(String[] args) {
        int a=10;
        int b=0;
        try {//使用ctrl+alt+t自动生成的捕获异常的语句
            System.out.println(a/b);
        } catch (Exception e) {
            e.printStackTrace();//打印栈信息
        } finally {
        }


    }}


java.lang.ArithmeticException: / by zero//结果
	at com.oop2.Main.main(Main.java:8)

假设要捕获多个异常,需要用到多个catch语句.每个catch语句从小到大排序.

throw 主动抛出异常一般用在方法里

package com.oop2;

public  class Abs {
    public void set(int month){
        if(month>12){
            throw new ArithmeticException("月份错误");
        }
}}



//结   果
Exception in thread "main" java.lang.ArithmeticException: 月份错误
	at com.oop2.Abs.set(Abs.java:6)
	at com.oop2.Main.main(Main.java:5)

方法抛出异常,并且无法解决时,需要用 throws 声明

package com.oop2;

public  class Abs {
    public void set(int month)throws ArithmeticException{//该方法无法解决这个异常,将抛出
        if(month>12){
            throw new ArithmeticException("月份错误");
        }
}}

//结   果
Exception in thread "main" java.lang.ArithmeticException: 月份错误
	at com.oop2.Abs.set(Abs.java:6)
	at com.oop2.Main.main(Main.java:5)

六 包机制

命令行生成javadoc文档 : javadoc -encoding UTF-8 -charset UTF-8 HelloWordl.java

  • @auther : 作者
  • @Version : 当前代码更新到第几版
  • @Since : 当前代码可以运行的最早java版本
  • @Param : 代码中的参数
  • @return : 返回的值
  • @throws : 抛出的一些异常

命令行传参 : java HelloWorld hello fenggang upup

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值