LuoZzz的java从零学习day3

多态

即同一方法可以根据发送对象的不同而采用多种不同的行为方式

一个对象的实际类型是确定的 但可以指向对象的引用类型有很多

/*可以指向的引用类型不确定了 父类的引用指向子类
  子类 能调用的方法都是自己的或者继承父类的
  父类 可以指向子类 但是不能调用子类独有的方法
  对象能执行哪些方法 主要看对象左边的类型 和右边关系不大*/
Student s1 = new Student();
Person s2 = new Student();
s1.eat();
((Student) s2).eat();
//----------------
public class Person{}
//----------------
public class Student extends Person{
    public void eat(){}
}

注意事项

  1. 多态是方法的多态 属性没有多态

  2. 父类和子类;有联系。否则类型转化异常 ClassCastException

  3. 存在条件:继承关系+方法需要重写+父类引用指向子类对象 Father f = new Son();

    不能重写类型

    1.static 方法属于类 不属于实例

    2.final 常量

    3.private方法

instanceof与类型转换

1.父类引用指向子类对象

2.把子类转换为父类 向上转型 (可能会丢失一些已有的方法

3.把父类转换为子类 向下转型 强制转换

4.方便方法的调用 减少重复的代码 简洁

Static关键字

静态随着类的生成而生成

private static int age;// 静态变量
private int age2//非静态变量
//静态代码块 对象一旦创建第一个执行 且只会执行一次 (附初始值)
static {
    System.out.println("第一个执行"):
}
//
{
    //匿名代码块
}
//静态导入包
import statc java.lang.Math.PI

抽象类

抽象类中可以没有抽象方法 抽象方法一定在抽象类中

public abstract void run(); //没有方法的实现

抽象类的所有方法 ,继承了它的所有子类都必须实现它的方法

(单继承的约束性)

1.不能new出抽象类 只能靠子类去实现

2.抽象类里可以有普通的方法

public abstract class A{
    public abstract void run();
    public void go(){
        //TODO
    }
}

接口

只有规范 自己无法写方法 专业的约束 约束和实现分离

关键字 interface

//接口中的所有定义都是抽象的
public interface B{
     /*public abstract*/ void run();   
}

接口都需要有实现类

public class A implements B,C//多继承
{
    //实现接口的类 就必须实现接口的方法
    @Override
    public void run(){
        //TODO
    }
}

注意事项

  • 约束

  • 定义一些方法 让不同的人实现

  • 方法都是 public abstract

  • 常量都是 public static final

  • 借口不能被实例化 接口中没有构造方法

  • implements可以实现多个接口

  • 必须要重写接口中的方法

异常Exception

异常指程序运行中出现的不期而至的各种状况

分类

检查性异常

用户错误或问题引起的异常

运行时异常

可能被程序员避免的异常

错误

脱离程序员控制的问题

异常体系结构

java把异常作为对象处理

定义java.lang.Throwable作为所有异常的超类

通常分为错误Error异常Exception

异常处理机制

抛出异常

捕获异常

关键字:try catch finally throw throws

try {
    //监控区域
}catch(Exception e/*想要捕获的异常类型 最高级Throwable*/){
    //捕获异常
}finally{
    //善后工作
    //可省略
}

若要捕获多个异常 要从小到大捕获

Ctrl+Alt+T

throw new Exception 
//假设在方法中 处理不了这个异常 方法上抛出异常

自定义异常

  1. 创建自定义异常类

  2. 在方法中通过throw关键字抛出异常对象

  3. 如果在当前抛出异常的方法中处理异常,可以使用try-catch语句捕获并处理;否则在方法的声明处通过throws关键字指明要抛出给方法调用者的异常,继续进行下一步

  4. 在出现异常方法的调用者中捕获并处理异常

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值