大纲:

一、两个重要概念

① 请说明类和对象的区别

类是对某一类实物的描述,是抽象的;对象是一个实实在在的个体,是类的一个实例;

② 解释一下什么是类加载机制、双亲委派模型,好处是什么?

类加载机制:

双亲委派模型:

某个特定的类加载器在接到加载类的请求时,首先将加载任务委托给父类加载器,依次递归,如果父类加载器可以完成类加载任务,就成功返回;

只有父类加载器无法完成此加载任务时,才自己去完成。

好处:

二、java类及类的成员

① 重写(Overriding)与重载(Overloading)的区别?

重载:重载指的是同一个类中的两个方法,方法名相同,参数列表(参数的类型、个数、顺序)不同;对返回值类型没有要求;

重写:重写发生在子类与父类之间,子类重写父类的方法,要求与被重写的方法的参数列表和返回值相同;

具体不同:

1 重写与重载都是实现多态的方式,区别在于重载实现的是编译时的多态,重写实现的是运行时的多态;(在了解下)

2 重写后,子类方法的访问修饰权限不能小于父类的访问修饰权限;

3 重写后,子类不能比父类被重写方法声明更多的异常;

② 什么是构造函数?什么是构造函数重载?什么是复制构造函数?

构造函数(构造器):

当新对象被创建的时候,构造函数会被调用。每一个类都有构造函数。在程序中没有给类提供构造函数的情况下,Java编译器会为这个类创建一个默认的构造函数 。

构造函数重载:

java中构造函数的重载和方法重载很相似。可以为一个类创建多个构造函数。每一个构造函数都必须有他唯一的参数列表。

复制构造函数:

java不支持像C++中那样的复制构造函数 , 这个不同点是因为如果你不自己写构造方法的情况下,Java不会创建默认的复制构造方法。

三、面向对象的三大特征

① 面向对象的特征,解释下?

具体的注意点说明:

封装性:我们可以将类的属性私有化, 只有通过公共的get/set方法才能进行访问,在get/set方法中我们可以对内部逻辑进行封装处理,外部的调用方不必关心我们的处理逻辑。

继承性:

1 java不支持多继承;

2 类中的构造函数不能被继承;如果构造函数被private修饰 ,那么该类就不能被其他类继承;

3 方法的重写;

多态性:

1 方法的重载(与重写);

2 向上转型和向下转型;

参考链接:https://www.cnblogs.com/liyanyan665/p/11198602.html

四、java关键字

static关键字:

① 是否可以在static环境中访问非static变量?

② 解释一下static关键字,java中是否可以重写一个private或者是static的方法?

static关键字:static是表示静态的意思,它可用来修饰成员变量和成员函数,被静态修饰的成员函数只能访问静态成员,

不能访问非静态成员。静态是随着类的加载而加载,因此可以直接用类进行访问。

private或者是static的方法都不能被重写:

覆盖,也就是我们常说的重写,是子类继承父类,且子类中的方法和父类中的方法,方法名、参数列表和返回值都相同。

private修饰的方法,不能被继承,所以也不存在重写(覆盖);

static修饰的方法,可以被继承,但不能被重写。 因为方法覆盖是基于运行时动态绑定的,而static方法是编译时静态绑定的。static方法跟类的任何实例都不相关,所以概念上不适用。

③ 静态与非静态的区别?

这里的静态,指以static关键字修饰的,包括类,方法,块,字段。静态变量和静态方法都属于静态对象非静态,指没有用static 修饰的。

静态有一些特点:

1.全局唯一,任何一次的修改都是全局性的影响

2.只加载一次,优先于非静态

3.使用方式上不依赖于实例对象。直接用 类名.静态方法名  或者  类名.静态变量名就可引用并且直接可以修改其属性值,不用get和set方法。

4.生命周期属于类级别,从JVM 加载开始到JVM卸载结束。

5.static final用来修饰成员变量和成员方法,可简单理解为“全局常量”。对于变量,表示一旦给值就不可修改;对于方法,表示不可覆盖。

6.静态方法和静态变量创建后始终使用同一块内存。

7.静态方法优点是效率高,缺点是不自动进行销毁。

final关键字:

④ 说明一下final、finally、finalize的区别?

final用于声明属性,方法和类,分别表示属性不可交变,方法不可覆盖,类不可继承。

finally是异常处理语句结构的一部分,表示总是执行。

finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,供垃圾收集时的其他资源回收,例如关闭文件等。

⑤ 说明一下final怎么用的?

五、其他知识点

① 请列举你知道的Object类的方法并简要说明

Object()默认构造方法。

clone() 创建并返回此对象的一个副本。

equals(Object obj) 指示某个其他对象是否与此对象“相等”。

finalize()当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。

getClass()返回一个对象的运行时类。

hashCode()返回该对象的哈希码值。

notify()唤醒在此对象监视器上等待的单个线程。

notifyAll()唤醒在此对象监视器上等待的所有线程。

toString()返回该对象的字符串表示。

wait()导致当前的线程等待,直到其他线程调用此对象的 notify() 方法或 notifyAll() 方法。

wait(long timeout)导致当前的线程等待,直到其他线程调用此对象的 notify() 方法或 notifyAll() 方法,或者超过指定的时间量。

wait(long timeout, int nanos) 导致当前的线程等待,直到其他线程调用此对象的 notify() 方法或 notifyAll() 方法,或者其他某个线程中断当前线程,或者已超过某个实际时间量。

六、抽象类和接口

① 抽象类和接口的区别?

抽象类:

1 抽象类必须在类前用abstract关键字修饰。如果一个类中有抽象方法,那么这个类也是抽象的;

2 子类必须实现抽象类中的抽象方法,如果有未实现的,那么子类也是抽象类,必须用 abstract 修饰 ;

3 抽象类默认的权限修饰符为public,可以定义为 public 或 procted,如果定义为 private,那么子类则无法继承;

4  抽象类不能创建对象, 抽象类就是为了继承而存在的;

接口( interface ):

1 接口中的变量会被隐式地指定为public static final变量(并且只能是public static final变量,用private修饰会报编译错误);

2 接口中的方法会被隐式地指定为public abstract方法且只能是public abstract方法(用其他关键字,比如private、protected、static、 final等修饰会报编译错误);

3 接口中所有的方法不能有具体的实现,也就是说,接口中的方法必须都是抽象方法;

区别:

1 一个类只能继承一个抽象类,而一个类却可以实现多个接口;

2 抽象类可以提供成员方法的实现细节,而接口中只能存在public abstract 方法;

3 抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是public static final类型;

4 接口中不能含有静态代码块以及静态方法,而抽象类可以有静态代码块和静态方法;(java 8开始,接口中可以有静态方法)

② java是否支持多继承?

Java中类不支持多继承,只支持单继承(即一个类只有一个父类)。

但是java中的接口支持多继承,即一个子接口可以有多个父接口。(接口的作用是用来扩展对象的功能,一个子接口继承多个父接口,说明子接口扩展了多个功能,当类实现接口时,类就扩展了相应的功能)。

java复制的函数会报错,2 面试题之面向对象相关推荐

  1. java项目如何启动tomcat服务器,Java web项目启动Tomcat报错解决方案

    Java web项目启动Tomcat报错解决方案 点击运行项目时显示 A Java Exception has occurred. 'Starting Tomcat v9.0 Server at lo ...

  2. 软件开发Linux环境下,java通过JNA调用so报错,求大神解答,感激不尽。

    软件开发Linux环境下,java通过JNA调用so报错,求大神解答,感激不尽. 图片说明 最佳答案: 专家已采纳 先用c等调用一下so,看函数能否正确调用 文章来源:https://ask.csdn ...

  3. java找不到对象报错_java找不到对象报错

    java找不到对象报错 [2021-02-04 02:18:22]  简介: php去除nbsp的方法:首先创建一个PHP代码示例文件:然后通过"preg_replace("/(\ ...

  4. Linux CentOS7 中 完美解决VMTools失效,windows 与 Liunx间完美复制文件,无报错的解决方案

    Linux CentOS7 中 完美解决VMTools失效,windows 与 Liunx间完美复制文件,无报错的解决方案 DreamFollowerss 2020-05-25 12:03:08  3 ...

  5. php 正则报错,PHP正则替换函数preg_replace()报错:Notice Use of undefined constant的解决方法分析...

    本文实例讲述了PHP正则替换函数preg_replace()报错:Notice Use of undefined constant的解决方法.分享给大家供大家参考,具体如下: 环境错误级别:error ...

  6. 【hadoop】java 获取 yarn app 信息 报错 ConfiguredRMFailoverProxyProvider - Failing over to rm2

    文章目录 1.概述 1.概述 java 获取 yarn app 信息 报错 ConfiguredRMFailoverProxyProvider - Failing over to rm2 2022-0 ...

  7. JMETER java.net.SocketException: Connection reset 报错解决方案

    JMETER java.net.SocketException: Connection reset 报错解决方案 参考文章: (1)JMETER java.net.SocketException: C ...

  8. JAVA类运行时,报错“Error occurred during initialization of boot layer”

    JAVA类运行时,报错"Error occurred during initialization of boot layer" 网上查原因是由于JDK9及以上版本引入了模块,所以在 ...

  9. verilog “function”函数一直报错解决办法

    verilog "function"函数一直报错 ,经qq群中的大佬指点,发现是在 function 函数内部的逻辑部分缺少 begin--end导致.在此记录一下. functi ...

最新文章

  1. 简单介绍一下R中的几种统计分布及常用模型
  2. ASP.NET输出JSON格式数据
  3. 02NSString 转换 UTF8
  4. vue 分享给好友 点击分享按钮_基于vue+leaflet+echart的足迹分享评论平台
  5. 生产环境子域降级记录
  6. ALTERA产品型号命名
  7. electron开发
  8. 基于java 工单管理_实训任务工单1-2(编写规范Java代码) 实训任务工单1-2(编写规范Java代码).docx_学小易找答案...
  9. 大话业务流程图(二)—如何绘制业务流程图?
  10. nginx学习文档之二 配置负载均衡-windows配置负载均衡
  11. 蓝桥杯- 煤球数目-java
  12. K8s高可用集群部署
  13. hibernate的一级缓存问题
  14. visio2016上下标
  15. 基于JAVA宠物店管理系统设计与实现计算机毕业设计源码+数据库+lw文档+系统+部署
  16. python学期学习总结
  17. 《操作系统真象还原》从零开始自制操作系统 自写源码实现 (fs相关文件)
  18. nginx HLS m3u8播放视频跨域问题
  19. 性能衡量指标-吞吐量与响应时间
  20. HDMI、AV音视频端子介绍

热门文章

  1. JBoss7的启动时间
  2. RTP/RTCP流媒體服務器技術研究
  3. linux 将img写入硬盘,如何使用Etcher轻松将.img写入Mac上的SD卡
  4. rust怎么不要的墙拆掉_封阳台,栏杆要不要拆掉?栏杆装在玻璃窗里面还是外面...
  5. 计算机最早的运算领域,2013年计算机一级MsOffice模拟试题及答案38
  6. java图片裁剪并保存_java裁剪图片并保存的示例分享
  7. endnote x9中科大版_文献管理软件Endnote的一些使用经验
  8. mysql c 更新 数据_Mysql:如果数据存在则更新,不存在则插入
  9. 『ACM』ACM模板合集
  10. 【人脸对齐-Landmarks】人脸对齐算法常用评价标准