java基本功16课:(7)面向对象的陷阱

instanceof 运算符的陷阱

  • instanceof 它用于判断前面的对象是否是后面的类或其子类、实现类的实例。如果是返回 true,否则返回 false。
  • instanceof 运算符前面操作数的编译时类型必须是:
    • 要么与后面的类相同
    • 要么是后面类的父类
    • 要么是后面类型的子类

构造器陷阱

  • 构造器是 Java 中每个类都会提供的一个“特殊方法”。构造器负责对 Java 对象执行初始化操作,不管是定义实例变量时指定的初始值,还是在非静态初始化代码块中所做的操作,实际上都会被提取到构造器中执行。
  • 构造器不能声明返回值类型,也不能使用void声明构造器没有返回值。

构造器创建对象吗

  • 构造器并不会创建 Java 对象,构造器只是负责执行初始化,在构造器执行之前,Java 对象所需要的内存空间,是由 new 关键字申请出来的。绝大部分时候,程序使- 用 new 关键字为一个 Java 对象申请空间之后,都需要使用构造器为这个对象执行初始化,但在某些时候,程序创建 Java 对象无需调用构造器,如下:
    • 使用反序列化的方式恢复 Java 对象
    • 使用 clone 方法复制 Java 对象

到底调用哪个重载方法

  • 第一阶段 JVM 将会选取所有可获得并匹配调用的方法或者构造器

  • 第二个阶段决定到底要调用哪个方法,此时 JVM 会在第一阶段所选取的方法或者构造器中再次选取最精确匹配的那一个。

方法重写的陷阱

  • 无法重写父类 private 方法。如果子类有一个与父类 private 方法具有相同方法名、相同形参列表、相同返回值类型的方法,依然不是重写,只是子类定义了一个与父类相同的方法。

static 关键字

  • static 可以修饰类中定义的成员:field、方法、内部类、初始化代码块、内部枚举类

静态方法属于类

  • 被 static 修饰的成员(field、方法、内部类、初始化块、内部枚举类)属于类本身,而不是单个的 Java 对象。静态方法也是属于类。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Java基础笔记(一) 面向对象 [TOC] 1、定义类 其中的修饰符可以是public、final、abstra...
    小小少年Boy阅读 402评论 0 1
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,826评论 18 399
  • 一:java概述:1,JDK:Java Development Kit,java的开发和运行环境,java的开发工...
    ZaneInTheSun阅读 2,726评论 0 11
  • (一)Java部分 1、列举出JAVA中6个比较常用的包【天威诚信面试题】 【参考答案】 java.lang;ja...
    独云阅读 7,150评论 0 62
  • ##晓物鉴狗粮## 对朋友圈撒狗粮这个事情,我向来是不赞成、不反对、不提倡、不打击的。但是对于一早一晚定期撒狗粮的...
    BigCTime阅读 305评论 0 0