学习日记(面向对象编程 OOP 下篇)

学习日记(面向对象编程 OOP)

九、instanceof 详解

  • 简介:instanceof 是 Java 的关键字之一,左边是对象,右边是类,返回值为 Boolean 型(true or false)。

  • 作用:测试左边的对象是否是右边类或者该类的子类创建的实例对象。

X instanceof Y结果判断方法

  1. 先看 X 的引用类型和 Y 是否存在父子关系,若存在,则编译通过进行第二步;若不存在,则编译报错。
  2. 看 X 是否是 Y 或 Y 的子类创建的实例对象,若是,则结果为 true;若不是,则结果为 false。

举例


十、类型转换

  • 基本类型转换:高 -> 低 需要强制类型转换;
  • 引用类型转换:父类 -> 子类,向下转型,需要强制类型转换;子类 -> 父类,向上转型,不需要强制转换,可能丢失自己本来的一些方法;
  • 类型转换的意义:方便方法的调用,减少重复的代码,有效地提升代码的利用率,使代码变得更简洁。


十一、static 详解

  1. 用类调用静态成员变量和静态方法

  2. 同一类中:静态方法之间可以互相调用,非静态方法之间可以互相调用,非静态方法可以调用静态方法,静态方法不能调用非静态方法。

  3. 代码块静态代码块:程序在执行时并不能主动调用匿名代码块,匿名代码块是在创建对象时自动创建的,在构造器之前;静态代码块是类一加载的时候就会执行,永久只执行一次。可以用代码块赋初值。

  4. 静态导入包


十二、抽象类(抽象的抽象)

Abstract 修饰符可以用来修饰方法,也可以用来修饰类。如果修饰方法,那么该方法就是抽象方法,如果修饰类,那么该类就是抽象类

  • 抽象类中可以没有抽象方法,但有抽象方法的类一定要声明为抽象类;
  • 抽象类,不能用 new 关键字创建对象,它是用来让子类继承的;
  • 抽象方法,只有方法的声明,没有方法的实现(不能有方法体),它是用来让子类实现的(因此抽象方法不能是 private);
  • 子类继承抽象类,那么就必须要实现抽象类中没有实现的抽象方法,否则该子类也要声明为抽象类;
  • 打开 class 文件可以发现:抽象类存在构造器
  • 抽象类存在的意义:被子类继承,抽象类体现的是模板思想,让子类使用模板(抽象类中的抽象方法)去重写抽象方法实现对应的需求(看注意 4)。


十三、接口的定义和实现

  • 普通类:只有具体实现
  • 抽象类:具体实现规范(抽象方法)都有;
  • 接口:只有规范。可以实现约束和实现分离。

总结

  1. 接口就是规范,定义的是一组规则,体现了现实世界中“如果你是…则必须能…”的思想。
  2. 接口的本质是契约,像法律一样,制定好后大家都遵守。
  3. 面向对象(OO)的精髓,就是对对象的抽象,最能体现这一点的就是接口。
  4. 声明类的关键字是 class,声明接口的关键字是 interface

举例

  • 接口中定义的方法可以不写修饰符,默认public abstract ,接口中定义的属性可以不写修饰符,默认为静态的常量 public static final ,一般不会在接口中定义属性;
  • 接口都需要有实现类,一般实现类结尾用 Impl
  • 类可以通过关键字 implements 实现多个接口,接口的实现类必须要重写接口中的所有方法;
  • 类里面可以有方法的实现,但是接口里面只有方法的定义;
  • 接口不能被实例化,接口没有构造器


十四、内部类

内部类就是在一个类的内部再定义一个类,如,A 类中定义一个 B 类,那么 B 类相当于 A 类来说称为内部类,A 类相当于 B 类来说就是外部类。内部类包括成员内部类静态内部类局部内部类匿名内部类等。

  • 成员内部类

  • 静态内部类

  • 局部内部类:注意:局部内部类不能声明为 public 类型,只能有一个 public class

  • 匿名内部类


注意:

  1. instanceof 是一个比较转换的过程。

  2. 类被 final 修饰后不能被继承。

  3. 只有单继承,接口可以多继承。

  4. 抽象类存在的意义简单理解:假如有一个动物的类,里面有一个 run 的方法,这时候需要继承他,小狗、小猫、小虎都会跑,这些每个子类都要继承他,但是这个 run 方法已经被父类实现了,所以每个子类都需要重写方法体,就比较麻烦。抽象类就是,父类定义了这个方法,但不去实现,由子类去继承,然后去实现(重写)方法,谁用谁实现。

  5. 理解

  6. 要学习抽象的思维持续地学习

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Sun 3285

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值