一、Java字段是没有多态的,只有普通方法是多态的。 当父类的引用指向子类对象,通过直接访问 得到的结果是父类身上字段的值。 如果是通过普通方法获取字段,则获取到的是子类字段的值。 二、Java静态方法没有多态
一、Java字段是没有多态的,只有普通方法是多态的。 当父类的引用指向子类对象,通过直接访问 得到的结果是父类身上字段的值。 如果是通过普通方法获取字段,则获取到的是子类字段的值。 二、Java静态方法没有多态
父类中私有方法,子类中也有一个跟父类一样的方法。对于子类来说,这不是重写父类的方法。而是属于子类自己新的方法,因为父类的私有方法,子类是不可见的。 下面是一种特殊情况,父类的引用指向子类对象,但程序的入口方法main方法是放在父类里,父类的私有方法,对于引用来说是可见的。还记得对象调用方法的时候,会隐式传入一个this吗?这时候的引用father就相当于this,因此,实际上调用的的是this.eating(); 最后的打印结果是:private eating() ... 如果把入口方法main放在子类,则fath…
最近整理了最全的Java核心面试知识点笔记,为找工作的小伙伴们添砖加瓦。以下是笔记中的一小部分内容。文末给出获取整本笔记的地址。 ArrayBlockingQueue :由数组结构组成的有界阻塞队列。 LinkedBlockingQueue :由链表结构组成的有界阻塞队列。 PriorityBlockingQueue :支持优先级排序的无界阻塞队列。 DelayQueue:使用优先级队列实现的无界阻塞队列。 SynchronousQueue:不存储元素的阻塞队列。 LinkedTransferQueue:由链表结构…
最近整理了Java核心基础技术的所有知识点,整理成一本详细的带图文的pdf电子书笔记。下面记录了一小部分笔记里边的知识,文末给出获取整本电子书地址。 访问控制权限又称:封装 ,它是面向对象三大特性中的一种,我之前在学习过程中经常会忽略封装,心想这不就是一个访问修饰符么,怎么就是三大特性的必要条件了。后来我才知道,如果你信任的下属对你隐瞒 bug,你是根本不知道的 。 访问控制权限其实最核心就是一点:只对需要的类可见。 Java中成员的访问权限共有四种,分别是 public 、protected 、default …
最近精心总结了一些关于Java核心基础面试知识笔记,以下只是部分知识,文末会给出获取整本笔记地址。 尽量答出以下几个关键词: 1) 简单易学。Java有丰富的类库,能够通过静态方法封装,降低API的学习成本,提高工作效率。 2) 面向对象。这个也是Java最重要的特性,java能够使得程序耦合度更低,内聚性更高。 3) 可靠安全。Java生态系统包括用于分析和报告安全性问题的各种工具。 4) 与平台无关。Java能够跨平台使用。 5)支持多线程。Java可以采用多线程+协程方式实现更多的并发操作。 1) …
编译器并不是为每个引用都创建默认的对象,以此来避开不必要的负担。 但是,如果想初始化这些引用,可以在代码的下面位置进行初始化。 1、在定义对象的时候进行初始化(直接手动初始化) 2、在构造器中进行初始化 3、惰性初始化(使用到时才进行初始化) 4、使用实例初始化(代码块初始化) 代码: 由上图可以知道,初始化顺序: ①定义对象初始化>②实例初始化>③构造器初始化>④惰性初始化
加载 加载是类加载的第一个过程,在这个阶段,将完成一下三件事情: 通过一个类的全限定名获取该类的二进制流。 将该二进制流中的静态存储结构转化为方法去运行时数据结构。 在内存中生成该类的 Class 对象,作为该类的数据访问入口。 验证 验证的目的是为了确保 Class 文件的字节流中的信息不回危害到虚拟机.在该阶段主要完成以下四钟验证: 文件格式验证:验证字节流是否符合 Class 文件的规范,如主次版本号是否在当前虚拟机范围内,常量池中的常量是否有不被支持的类型. 元数据验证:对字节码描述的信息进行语义分析,如这…
使用Java开发一个简单的会员功能,当用户请求过来时候, 检查用户之前是否为会员,如果是,则在原有的会员截至日期加上一年(假设用户选择开通年费会员) 如果不是会员,则从今天的日期,开始添加为期一年的会员 判断用户之前是否为会员,使用时间相减法,代码如下: /** * 判断之前是否是VIP用户 * @param user * @return */ @Override public Boolean isVipUser(User user) { long m = 0; LambdaQueryWrapper<VipU…
对于不想进行序列化的变量,使用 transient 关键字修饰。 transient 关键字的作用是:阻止实例中那些用此关键字修饰的的变量序列化;当对象被反序列化时,被 transient 修饰的变量值不会被持久化和恢复。 transient 只能修饰变量,不能修饰类和方法。