Java基础知识面试高频(2)

最近阴雨连绵,自然没什么好心情。想到今年秋招,不自然又焦虑几分。
(一)面向对象与面向过程有什么区别?
答:面向对象是指将数据和对数据的操作放在一起,作为一个相互依存的整体。而面向过程是以时间为中心的开发方法,自顶向下顺序执行,按照功能划分成若干模块。区别在于:
1.出发点不同。面向对象方法强调的是将问题的要领映射到对象以及对象之间的接口上。面向过程方法强调的是过程的抽象话和模块化,以过程为中心构造处理问题。
2.层次逻辑不同。面向对象方法是用类的结构层次来体现类之间的继承和发展。面向过程方法是用模块的结构层次结构来概括模块和模块和模块之间的关系和功能。
3.数据处理的方式和控制程序的方式不同。面向对象方法是只能本类对象处理有关该类中的数据,是通过“事件”来激活运行程序。而面向过程是直接通过程序来处理数据,各个模块之间存在的是控制和被控制、调用和被调用的关系。
4.面向对象方法的实现是一种无缝的连接。而面向过程方法的实现是一种有缝的链接。

(二)面向对象有哪些特征?
抽象、继承、封装、多态。

(三)继承的几个特性
1.Java语言不支持多重继承,也就是说,子类至多只能有一个父类,但是可以通过实现多接口来达到多重继承的目的。
2.子类只能继承父类的非私有成员变量和成员方法。
3.当子类中定义的成员变量和父类中定义的成员变量重名时,子类并不会继承父类的成员变量
4.当子类中方法与父类中方法具有相同的函数签名时,子类会重写父类方法而不会继承。

(四)组合和继承的区别
组合是在新类里面创建原有类对象,重复利用已有类的功能。继承是根据已有类的实现来定义一个类的实现。

(五)多态实现的机制是什么?
多态包括运行时多态和编译时多态。编译时多态主要体现在方法的重载,而运行时多态主要体现在方法的重写(覆盖)。

(六)重载和覆盖需要注意的地方?
重载:
1.重载是通过不同的方法参数进行的区分,例如不同参数的个数、不同的参数类型或者不同参数顺序。
2.不能通过方法的访问权限、返回值类型和抛出的异常类型来进行重载。
3.对于继承来说,如果基类方法的访问权限是private,那么就不能在派生类中进行重载,因为派生类只会继承父类中非私有的成员变量和方法。
重写:
1.派生类中重写方法必须和父类中被重写方法具有相同的函数名和参数。
2.派生类中函数的返回值也必须和被重写函数的返回值相同。
3.派生类中重写方法所抛出的异常必须和基类中被重写方法抛出的异常一致。
4基类中被覆盖的方法不能是private,否则子类中只是定义了一个方法,而并没有对齐进行覆盖。

(七)抽象类和接口的异同?
相同点:
1.都不能实例化。
2.接口的实现类或抽象类的子类都只有实现了接口或抽象类中的方法才能够实例化。
不同点:
1.JDK8以前,接口中只能生命方法而不能实现,抽象类中必须包括抽象方法。
2.一个类可以实现多个接口,而只能继承一个抽象类。
3.接口的设计原则是“has a”的关系,而抽象类的设计原则是“is a”的关系。
4.接口中定义的成员变量默认是public static final,必须直接赋初始值。气所有的成员方法都是public、abstract的。抽象类中的抽象方法不能够被private、static、synchronized、native等访问修饰符修饰。
5.接口被运用于实现常用的功能,便于日后维护添加删除方法。而抽象类更倾向于充当公共的角色,不适合日后对抽象类中的方法进行修改。

(八)内部类
Java中内部类分为静态内部类、成员内部类、局部内部类、匿名内部类。
静态内部类是指被申明为static的内部类,它可以不依赖于外部类实例而实例化。静态内部类不能和外部类具有相同的类名称。不能访问外部类中非静态属性和方法。
成员内部类:成员内部类与类的实例绑定在一起,在成员内部类中不可以定义静态的成员变量和方法,只有当外部类实例化后成员内部类才能被实例化。
局部内部类:局部内部类就像是局部变量一样,不能被public protected prevate 及static修饰,只能访问方法中定义为final类型的局部变量。
匿名内部类
1.匿名内部类不能够有构造函数。
2.匿名内部类不能定义静态成员、方法和类。
3.匿名内部类不能是public、protected、private、static。
4.匿名内部类必须在new的后面,必须继承或者是实现一个接口。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值