java面试题一

面向对象三大特征:

1)封装:

1.1)类:封装的是对象的属性和行为

1.2)方法:封装的是特定业务功能实现

1.3)访问控制修饰符:封装访问的权限

2)继承:

2.1)作用:代码的复用,减少代码的重复

2.2)超类:所有派生类所共有的属性和行为

接口:部分派生类所共有的行为

派生类:派生类所特有的属性和行为

2.3)单一继承、多接口实现

传递性

3)多态:

3.1)意义:行为的多态、对象的多态

3.2)向上造型、强制类型转换、instanceof

3.3)多态的表现形式:

3.3.1)重写:根据对象来实现多态

3.3.2)重载:根据参数来实现多态

 

 

1.内存管理:由JVM来管理

1)堆:

1.1)存储所有new出来的对象(包括实例变量)

1.2)垃圾:没有任何引用所指向的对象

垃圾回收器(GC)不定时到内存中去清扫垃圾

回收过程是透明的(看不到的),并不一定一发现

垃圾就立刻回收,可以调用System.gc()建议

虚拟机尽快调度GC来进行回收

1.3)内存泄漏:不再使用的内存还没有被及时的回收

严重的泄漏会导致系统的崩溃

建议:不再使用的对象及时将引用设置为null

1.4)实例变量的生命周期:

创建对象时存储在堆中,对象被回收时一并被回收

2)栈:

2.1)存储正在调用的方法中的所有局部变量(包括方法的参数)

2.2)在调用方法时为在栈中为该方法分配一块对应的栈帧,

栈帧中存储方法的局部变量以及方法的参数

当方法调用结束时,栈帧被清除,局部变量一并失效

2.3)局部变量的生命周期:

调用方法时存在栈中,方法结束时与栈帧一并被清除

3)方法区:

3.1)存储.class字节码文件(包括方法、静态变量)

3.2)方法只有一份,通过this来区分具体的对象

 

 

1.接口:

是一种数据类型(引用类型)

由interface定义,只能包含常量和抽象方法

不能被实例化,是需要被实现的,实现类:

必须重写接口中的所有抽象方法

一个类可以实现多个接口,用逗号分隔

若又继承又实现时,应先继承后实现

接口可以继承接口

接口只可以被public 和 abstract 修饰

2.多态:

1)意义:行为多态(抽象方法都是多态的)

对象多态(向上造型的对象都是多态的)

2)向上造型(自动类型转换):

超类型引用指向派生类的对象

能点出来什么,看引用的类型

能造型成: 超类+所实现的接口

3)强制类型转换,成功的条件只有如下两种:

3.1)引用所指向的对象,就是该类型

3.2)引用所指向的对象,实现了该接口

4)若不符合如上两个条件,则发生ClassCastException类型转换异常

建议:在强制之前先通过instanceof判断引用指向的对象是否是该类型

 

 

1.抽象方法:

1)由abstract修饰

2)只有方法的定义,没有方法具体的实现(连{}都没有)

2.抽象类:抽象类可以包含正常方法

1)由abstract修饰

2)包含抽象方法的类必须是抽象类

不包含抽象方法的类也可以声明为抽象类----我乐意

3)抽象类不能被实例化

4)抽象类是需要被继承的,派生类:

4.1)重写抽象类中的所有抽象方法--变不完整为完整

4.2)也声明抽象类------不常用

5)抽象类的意义:

5.1)封装所有派生类所共有的属性和行为--代码复用

5.2)为所有派生类提供了统一的类型------向上造型<

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值