Java面试题目网站有哪些?( 四 )


clone 在第一步是和 new 相似的 。都是分配内存 。调用 clone 方法时 。分配的内存和原对象(即调用 clone 方法的对象)相同 。然后再使用原对象中对应的各个域 。填充新对象的域 。填充完成之后 。clone方法返回 。一个新的相同的对象被创建 。同样可以把这个新对象的引用发布到外部 。
5、Java中实现多态的机制是什么?
Java中的多态靠的是父类或接口定义的引用变量可以指向子类或具体实现类的实例对象 。而程序调用的方法在运行期才动态绑定 。就是引用变量所指向的具体实例对象的方法 。也就是内存里正在运行的那个对象的方法 。而不是引用变量的类型中定义的方法 。
6、谈谈你对多态的理解?
多态就是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定 。而是在程序运行期间才确定 。即一个引用变量到底会指向哪个类的实例对象 。该引用变量发出的方法调用到底是哪个类中实现的方法 。必须在程序运行期间才能决定 。因为在程序运行时才确定具体的类 。这样 。不用修改源代码 。就可以让引用变量绑定到各种不同的对象上 。从而导致该引用调用的具体方法随之改变 。即不修改程序代码就可以改变程序运行时所绑定的具体代码 。让程序可以选择多个运行状态 。这就是多态性 。
7、谈谈你对面向对象的理解?
所谓对象就是由一组数据结构和处理它们的方法组成的 。重点“数据”包括对象的特性、状态等的静态信息;“方法” 也就是行为 。包括该对象的对数据的操作、功能等能动信息 。把相同行为的对象归纳为类 。类是一个抽象的概念 。对象是类的具体 。简单点说:对象就是类的实例 。例如:小品演员就是一个类 。赵本山就是一个对象 。
面向对象的目的:解决软件系统的可扩展性 。可维护性和可重用性 。
● 面向对象的三大特性:封装、多态和继承:
(1)封装(对应可扩展性):隐藏对象的属性和实现细节 。仅对外公开接口 。控制在程序中属性的读和修改的访问级别 。封装是通过访问控制符(public protected private)来实现 。一个类就可看成一个封装 。
(2)继承(重用性和扩展性):子类继承父类 。可以继承父类的方法和属性 。可以对父类方向进行覆盖(实现了多态) 。但是继承破坏了封装 。因为他是对子类开放的 。修改父类会导致所有子类的改变 。因此继承一定程度上又破坏了系统的可扩展性 。只有明确的IS-A关系才能使用 。继承要慎用 。尽量优先使用组合 。
(3)多态(可维护性和可扩展性):接口的不同实现方式即为多态 。接口是对行为的抽象 。刚才在封装提到 。找到变化部分并封装起来 。但是封装起来后 。怎么适应接下来的变化?这正是接口的作用 。接口的主要目的是为不相关的类提供通用的处理服务 。我们可以想象一下 。比如鸟会飞 。但是超人也会飞 。通过飞这个接口 。我们可以让鸟和超人 。都实现这个接口 。
面向对象编程(OOP)其实就是一种设计思想 。在程序设计过程中把每一部分都尽量当成一个对象来考虑 。以实现软件系统的可扩展性 。可维护性和可重用性 。
Java异常处理面试题
1、final、finally、finalize 的区别?
● final:用于声明属性 。方法和类 。分别表示属性不可变 。方法不可覆盖 。被其修饰的类不可继承 。
● finally:异常处理语句结构的一部分 。表示总是执行 。
● finalize:Object 类的一个方法 。所以Java对象都有这个方法 。当某Java对象没有更多的引用指向的时候 。会被垃圾回收器回收 。该对象被回收之前 。由垃圾回收器来负责调用此方法 。通常在该方法中进行回收前的准备工作 。该方法更像是一个对象生命周期的临终方法 。当该方法被系统调用则代表该对象即将“死亡” 。但是需要注意的是 。我们主动行为上去调用该方法并不会导致该对象“死亡” 。这是一个被动的方法(其实就是回调方法) 。不需要我们调用 。
2、Java中异常分为哪些种类?
按照异常需要处理的时机分为编译时异常(也叫受控异常)也叫 CheckedException 和运行时异常(也叫非受控异常)也叫 UnCheckedException 。Java认为Checked异常都是可以被处理的异常 。所以Java程序必须显式处理Checked异常 。如果程序没有处理Checked 异常 。该程序在编译时就会发生错误无法编译 。这体现了Java 的设计哲学:没有完善错误处理的代码根本没有机会被执行 。对Checked异常处理方法有两种:

推荐阅读