序号 | 问题 | 详细答案 |
1 | 什么是类与对象?类和对象实例之间的关系? | 类具有继承、数据隐藏和多态三种主要特性。类是同一类对象实例的共性的抽象,对象是类的实例化;类是静态的,对象是动态的,对象可以看作是运行中的类。类负责产生对象,可以将类当成生产对象的工厂 |
2 | 构造函数的特点有哪些 | (1)构造函数的方法名与类名相同。 (2)构造函数没有返回类型。 (3)构造函数的主要作用是完成对类对象的初始化工作。 (4)构造函数不能由编程人员显式地直接调用。 (5)在创建一个类的新对象的同时,系统会自动调用 该类的构造函数为新对象初始化。 构造函数不可以被继承 默认构造函数指没有参数的构造函数 如果编写的类没有构造函数,系统会自动提供一个默认构造函数,它把所有的属性设为默认值(比如一些基本数据类型)。 |
3 | 是否可以从一个static方法内部发出对非static方法的调用? | 不可以。因为非static方法是要与对象关联在一起的,必须创建一个对象后,才可以在该对象上进行方法调用,而static方法调用时不需要创建对象,可以直接调用。 |
4 | JAVA中怎样去识别方法 | 根据方法名、参数列表、参数类型、参数顺序去识别的 |
5 | 创建对象的方法 | 1、用new语句创建对象,这是常见的创建对象的方法 2、运用反射手段,调用java.lang.Class 或者 java.lang.reflect.Construct类的newInstance()实例方法 3、调用对象的clone方法 4、运用反序列化手段,调用java.io.ObjectInputStream对象的readObject()方法 |
6 | 面向对象的特征有哪些方面 | 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象包括两个方面,一是过程抽象,二是数据抽象。 2.继承: 继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。 3.封装: 封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。 |
7 | abstract class和interface有什么区别? | 一 接口和抽象类的相似性 1 接口和抽象类都不能被实例化,它们都位于继承树的顶端,用于被其他类实现和继承。 2 接口和抽象类都可以包含抽象方法,实现接口或继承抽象类的普通子类都必须实现这些抽象方法。 二 接口和抽象类的区别 1 接口里只能包含抽象方法,静态方法和默认方法,不能为普通方法提供方法实现,抽象类则完全可以包含普通方法。 2 接口里只能定义静态常量,不能定义普通成员变量,抽象类里则既可以定义普通成员变量,也可以定义静态常量。 3 接口不能包含构造器,抽象类可以包含构造器,抽象类里的构造器并不是用于创建对象,而是让其子类调用这些构造器来完成属于抽象类的初始化操作。 4 接口里不能包含初始化块,但抽象类里完全可以包含初始化块。 5 一个类最多只能有一个直接父类,包括抽象类,但一个类可以直接实现多个接口,通过实现多个接口可以弥补Java单继承不足。 |
8 | final意味着什么 | |
9 | final 、finally、finallize区别 | final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。 finally是异常处理语句结构的一部分,表示总是执行。 finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。 |
10 | OverLoading 和OverRiding的区别 | 是Java多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数,我们说 该方法被重写 (Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被“屏蔽”了。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。Overloaded的方法是可以改变返回值的类型。 |