java常见面试题之面向对象

面向对象考核点

目录

面向对象考核点1、说一下你对类与对象的理解

2、Java创建对象有几种方式?

3、static 关键字作用?

4、静态方法能否问非静态成员,为什么?

5、访问控制符区别(封装)?

6、面向对象三大特点?

7、什么是多态?多态实现需要满足的三个条件

8、this关键与super关键区别

9、重写与重载的区别?

10、抽象类和接口区别?

11、接口中可以定义哪此成员

12、Object类中常用方法

13,Java 中会存在内存油漏吗,请简单描述,

14、说明内存泄漏和内存溢出的区别和联系?

15、构造器(constructor)是否可被重写(override)?

16、什么是内部类?内部内有哪几个形式

17、面向对象设计几大原则


1、说一下你对类与对象的理解

对象是基于模板生成的个体(实例),在写面向对象程序时,需要先设计出模板(类),再使用类创建对象

2、Java创建对象有几种方式?

1. new 创建新对象
2. 通过反射机制
3. 采用 clone 机制
4. 通过序列化机制

3、static 关键字作用?

static定义类的静态成员
静态块
静态属性
静态方法

这些被修饰的变量和方法不属于任何一个实例对象,而是被类的实例对象所共享。还有一个作用是形成静态代码快来优化程序性能,static只会在类被初次加载的时候执行一次。

4、静态方法能否问非静态成员,为什么?

不能
静态成员是属于类、非静态成员属于对象,静态成员在类加载完毕即可执行,此时对象可能不存在,也就谈不上访问;

5、访问控制符区别(封装)?

有4种

                  类内       类所在的包内      包外子类内         所以类

 public       可以        可以                可以              可以

 protected   可以        可以               可以              不可以

 缺省         可以        可以               不可以            不可以

 Private      可以        不可以           不可以            不可以


6、面向对象三大特点?

封装 、继承、多态

封装:将自己内部的属性和方法封装起来,保护内部的代码,尽可能的隐藏内部的细节。使用封装可以减少耦合,可以对类的内部结构进行自由的修改。

       继承:用以存在的类作为基础,创建新的类,新的类可以增加新的数据和功能。也可以使用父类的功能,但不能有选择的继承父类。使用继承可以增加代码的复用性,提高开

发效率

       多态:多态的效果就是引用变量所指向的具体类型在编译是是不确定的,在运行是才会确定下来。

7、什么是多态?多态实现需要满足的三个条件

多态:父类行为的多面性称为多态;
三个条件:需要有继承 、需要有重写、需要通过父类的对象来调用;

8、this关键与super关键区别

this:表示本类的对象,super:父类的对象;
this关键字有三个作用:第1:调用本类的成员,第2:区分成员变量与局部变量 第3:调用构造方法;
super关键字作用:第1:调用父类对象成员 第2:调用父类的构造方法;

9、重写与重载的区别?

重载(overload):在同一个类中,方法名相同参数列表不同。与方法返回值和访问修饰符无关。
重写(override):子类对父类的方法进行重新实现称为重写;抛出异常小于等于父类,访问修饰符大于等于父类。

10、抽象类和接口区别?

| 不同点   | 抽象类   | 接口         |
| -------- | -------- | ------------ |
| 关键字   | abstract | interface    |
| 实现     | extends  | implements   |
| 构造函数 | 有       | 无           |
| 属性     | 随意     | static final |

接口是规则,约束,规范。

抽象类一种类型应该具备的基本特征与功能

       相同点:

都不能被实例化。

接口的实现类和抽象类的子类只有全部实现了接口或者抽象类中的方法后才可以被实例化。

       不同点:

接口只能定义抽象方法不能实现方法,抽象类既可以定义抽象方法,也可以实现方法。
单继承,多实现。接口可以实现多个,只能继承一个抽象类。

接口强调的是功能,抽象类强调的是所属关系。

接口中的所有成员变量 为public static final, 静态不可修改,当然必须初始化。接口中的所有方法都是public abstract 公开抽象的。而且不能有构造方法。抽象类就比较自由了,和普通的类差不多,可以有抽象方法也可以没有,可以有正常的方法,也可以没有。


11、接口中可以定义哪此成员

1.属性(静态常量)与方法(抽象方法)
2.JKD1.8:增加了静态方法与默认方法
3.JDK1.9增加:私有方法、私有静态方法

12、Object类中常用方法

(1)public boolean equals(java.lang.Object) :比较对象的地址值是否相等
(2)public native int hashCode() :获取哈希码
(3)public java.lang.String toString() :把数据转变成字符串
(4)public final native java.lang.Class getClass() :获取类结构信息
(5)protected void finalize() throws java.lang.Throwable :垃圾回收前执行的方法
(6)protected native Object clone() throws java.lang.CloneNotSupportedException: 克隆
(7)public final void wait() throws java.lang.InterruptedException :多线程中等待功能
(8)public final native void notify(): 多线程中唤醒功能
(9)public final native void notifyAll(): 多线程中唤醒所有等待线程的功能 

13,Java 中会存在内存油漏吗,请简单描述,

理论上 Java 因为有垃圾回收机制(GC)不会存在内存泄露问题;然而在实际开发中也会。
java 中内存泄露的发生场景,通俗地说,就是程序员可能创建了一个对象,以后一直不再使用这个对象,这个对象却一直被引用,即这个对象无用但是却无法被垃圾回收器回收的,这就是 java 的内存泄露。

14、说明内存泄漏和内存溢出的区别和联系?

内存溢出 out of memory,是指程序在申请内存时,没有足够的内存空间供其使用,出现 out of memory;比如申请了一个 integer, 但给它存了 long 才能存下的数,那就是内存溢出。
内存泄露 memory leak,是指程序在申请内存后,无法释放已申请的内存空间,一次内存泄露危害可以忽略,但内存泄露堆积后果很严重,无论多少内存,迟早会被占光。
memory leak 会最终会导致 out of memory!

15、构造器(constructor)是否可被重写(override)?

构造器不能被继承,因此不能被(子类)重写。

16、什么是内部类?内部内有哪几个形式

在一个类的内部定义的类称为内部类
普通内部类
静态内部类
局部内部类:直接将一个为在定义在方法体内;
匿名内部类

17、面向对象设计几大原则

1. 单一职责原则:一个类(方法),只负责一项职绩(功能单一)
2. 开放封闭原则:对扩展开放,对修改封闭。
3. 里氏替换原则:任何基类出现的地方,子类一定可以出现(替换父类)。通俗讲:子类可以扩展父类的功能,但不能改变父类原有的功能
4. 依赖倒置原则:依赖于抽象,不依赖具体;即常说的面向接口编程; 
5. 接口隔离原则:使用多个小的专门的接口,不要使用一个大的总的接口
  • 0
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值