java 基础 ------重写/重载,抽象类/接口

目录

重写与重载

重写(override)

重载(overload)

抽象类与接口

sleep()与wait()


重写与重载

重写(override)

  1.  参数列表必须完全与被重写方法的相同;

  2. java 1.5 版本之前------返回类型必须完全与被重写方法的返回类型相同;之后,子类返回类型小于等于父类方法返回类型

  3. 访问权限大于或等于父类中被重写的方法的访问权限。例如:如果父类的一个方法被声明为public,那么在子类中重写该方法就不能声明为protected。否则会有以下信息:Cannot reduce the visibility of the inherited method from Base

  4. 重写的方法抛出的异常小于父类抛出的异常

  5. 重写发生情况

    1. 发生在有继承关系的父子类中

  6. 不能被重写的方法

    1. 如果不能继承一个方法,则不能重写这个方法

    2. 声明为final的方法不能被重写。

    3. 声明为static的方法不能被重写,但是能够被再次声明。(static和final的都不能被重写)

    4. 构造方法不能被重写。(构造方法属于static的)

  7. 运行期运行,方法重写(子类继承父类并重写方法)以及对象造型(父引用子类型对象),父子类的多态性表现,是动态分派,指令invokevirtual,在运行期间根据常量池中的类方法的符号引用解析到实际的类型上;

重载(overload)

  • 指在同一个类中,方法的名字相同,但是参数列表不同
  • 编译期运行,同一个类中,同名方法有不同参数列表(个数、类型),是一个类中多态性的表现,是静态分派,在编译期,通过静态类型而不是实际类型作为判定依据(静态方法也可以重载);

抽象类与接口

  • 构造方法
    • 抽象类有
    • 接口没有(接口不能被实例化)
  • 继承与实现
    • 抽象类单继承,一个类只能继承一个类
    • 接口多继承,一个接口可以继承多个接口
  • 抽象类
    • 抽象类里可以有,也可以没有抽象方法,有抽象方法的一定是抽象类
    • 抽象类中可以存在普通属性,方法,静态属性和方法。
    • 抽象类中的抽象方法,需要有子类实现,如果子类不实现,则子类也需要定义为抽象的。
    • 可以实现重载
    • 类中不可进行运算
  • 接口
    • 在接口中只有方法的声明,没有方法体。方法永远都被public来修饰。
    • 在接口中只有常量,(定义的变量,在编译的时候都会默认加上public static final)
    • 接口中定义的方法都需要有实现类来实现,如果实现类不能实现接口中的所有方法,则实现类定义为抽象类
    • 接口可以有default、static方法

sleep()与wait()

  1. 所属类不同
    • sleep来自Thread类,是Thread的静态方法
    • wait是Object超类的成员方法
  2. 对锁的作用
    1. sleep方法没有释放锁,sleep方法是单线程的,没有释放锁,这个锁指的是线程锁,监控状态依然存在
    2. wait方法释放了锁,wait方法释放锁,这个锁是对象锁,进入线程等待池等待
  3. 唤醒方式
    1. sleep(milliseconds)可以用时间指定使它自动唤醒过来,如果时间不到只能调用interrupt()强行打断;如Thread.Sleep(0)
    2. 等待其他线程调用notify/notifyAll唤醒等待池中的所有线程,才会进入就绪队列等待OS分配系统资源
  4. 使用范围
    1. sleep可以在任何地方使用
    2. wait,notify和notifyAll只能在同步控制方法或者同步控制块里面使用
  5. 异常
    1. sleep必须捕获异常,
    2. wait,notify和notifyAll不需要捕获异常

未完待续。。。。。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值