Java(11.1)

目录

包和访问修饰符

包(类比文件夹)

访问修饰符

重写和重载

重写

重载

抽象类和final关键字

抽象方法

抽象类

final关键字

final修饰方法

final修饰变量

final修饰类

多态

什么是多态?

编译时多态

运行时多态

为什么要用多态?

怎么实现多态?

多态对象转型问题

接口

什么是接口?

为什么要用接口?

怎么使用接口?

细节

类与类的关系

继承

拥有

代码块执行问题

代码块

静态代码块

异常结构和异常的处理

异常(Exception)

1.运行时异常(RuntimeException)

2.检查异常(CheckException)

3.异常的处理

错误(Error)

自定义异常


包和访问修饰符

包(类比文件夹)

1.域名倒置

2.功能划分详细

目的:

针对资源进行详细的划分

访问修饰符

                                               

访问修饰符权限(能否使用相应的被修饰的对象)
名称本类  同包子类其他
private(私有)×××
默认(friendly)××
protected(受保护)×
public(公共)

重写和重载

重写

·当从父类继承的方法无法满足子类的需求时进行方法的重写.

1.方法名与父类一致

2.返回值与父类一致

3.参数与父类一致

4.访问修饰符不能严于父类(访问权限不能低于父类)

重载

1.方法名相同

2.参数列表不同

3.与返回值无关

4.与访问修饰符无关

5.同类中重载

抽象类和final关键字

抽象方法

定义:[访问修饰符] abstract 返回值类型 方法名(参数)[异常列表];

·没有方法体的方法

·拥有抽象方法的类必须定义为抽象类

目的:方法的实现与不实现没有任何价值,没有必要实现方法体,构成抽象方法

抽象类

抽象类的定义:

[访问修饰符] abstract class 类名{}

·抽象类不能创建对象

·父类的抽象方法必须被重写,如果子类不重写,就必须定义为抽象类

·抽象类不一定有抽象方法,有抽象方法的类一定是抽象类

//抽象类
public abstract class Employee {
    public String name;
    public double salary;
    public  void show(){
        System.out.println("姓名:"+name+",工资:"+salary);
    }
    Employee(String name, double salary){
        this.name = name;
        this.salary = salary;
    }
//抽象方法
    abstract public double cacSalary();
}
final关键字
final修饰方法

[访问修饰符] final 返回值 方法名(参数)···········

·该方法不能被覆盖

final修饰变量

[访问修饰符] final 数据类型 变量名 = 值;

1.定义方法:

·final修饰变量,该变量就是一个常量

·常量必须初始化,并且使用Static修饰

注意:

常量的名称要大写

final修饰类

[访问修饰符] class 类名{}

·final修饰的类不能被继承

多态

什么是多态?

同一个引用类型,使用不同的实例而执行不同的操作

编译时多态

编译阶段,该对象属于哪个类,则调用相应的方法

运行时多态

运行阶段,根据对象的引用找到堆中实际类的对象,调用实际方法的原型

为什么要用多态?

多态解决了程序的拓展性问题

怎么实现多态?

 1.继承,子类重写父类的方法。
 2.父类的引用指向子类对象

多态对象转型问题

1.子类对象转换为父类对象

Pet dog = new Dog();

2.父类对象转换为子类对象(可能会出现ClassCastException)

Dog dog  = (dog)pet;//如果不判断对象是否能转换就会在运行时报错

接口

什么是接口?

接口是一种需要强制遵守的约束(规范),如果不遵守规范就无法使用该接口

为什么要用接口?

java只能实现单继承,如果想要继承多个父类就会报错,接口就是解决方法,接口可以被多个接入

怎么使用接口?

[访问修饰符] interface 接口名称{}

public interface interf1 {}

 class 类名 implements 接口名1,接口名2.......

public class Test implements interf1,interf2 {
//重写接口内的抽象方法
}
细节

1.接口的方法必须是public abstract(默认)方法(jdk1.8之后接口内可以有public static方法)

2.接口没有构造方法,所以不能实例化接口(抽象类有构造方法,不同于接口)

3.接口内的变量都是由public static final(默认)修饰的常量

4.接口的方法子类必须重写(抽象方法)

5.接口可以多实现

类与类的关系

继承

is...a:Student is a person

拥有

has...a: I have a pen

内部类

A.B b = new A().new B();

静态内部类

A.B b = A.new B();

匿名内部类

接口名称(抽象类名称) 对象名 = new 接口名(){

//接口方法的重写

}

一次性类,作用周期和存活时间极短。用完即销毁

代码块执行问题

代码块

执行时机:对象被调用之前

作用:对象创建之前的加载或者初始化工作

静态代码块

执行时机:类被加载到方法区时

作用:对类在被加载时执行操作,只会执行一次

异常结构和异常的处理

异常(Exception)

依靠程序本身可以解决的非严重性问题

1.运行时异常(RuntimeException)

NullPointerException(空指针异常)

ClassCastException(类转换异常)

ArithmeticException(除数异常)

InputMissMachException(输入异常)

ArrayOutofBoundException(数组索引下标越界异常)

NumberFormatException(数字格式化异常)

2.检查异常(CheckException)

ClassNotFoundException(类无法加载异常)

FileNotFoundException(文件无法加载异常)

IOException(IO流异常)

3.异常的处理

try:捕获异常

catch:处理相应的异常

finally:无论是否发生异常都必定会执行(通常在此释放内存资源,例如IO流对象)

注意:

·catch可以有多个

·当发生对应类型的异常时,JVM自动创建对应的exception对象

·catch后的异常类型,一定要按照从子到父的顺序处理

·异常处理语句中有return则先执行finally再执行return(finally优先级高于return)

错误(Error)

依靠程序本身不能解决的严重性问题(硬件问题)

自定义异常

1.自定义异常类

2.抛出异常对象

throw new 异常()

注意:方法内部抛出异常,要么try ...catch处理,要么throws将异常抛出后由调用者处理

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值