第4章对象和类
1)OOP是什么意思?
ObjectOrientedProgramming(面向对象编程)
2)类和对象的区别?
类:对象的蓝图,生成对象的模板,是对一类事物的描述,是抽象的概念上的定义对象:对象是实际存在的该类事物的每个个体,因而也称为实例
3)类之间的3种关系?
依赖关系(uses-a)聚集关系(has-a)继承关系(is-a)
4)一个java源文件可以写多个类吗?
可以,但必须只能有一个公有类,并且文件名和公有类的类名相同。
5)类中有哪些成员?
有属性(数据域),方法,构造器(构造方法)
6)构造方法和普通方法的区别?
构造方法没有返回值,方法名必须和类名相同,需要用new语句调用构造方法。
7)普通方法可不可以也类名作为方法名?
是可以的,因为调用普通方法的语法和调用构造器的语法不一样。
8)一个构造器调用另外一个构造器需要用什么语法?
用this()语法调用另外一个重载构造器,需要注意的是调用语句必须是构造器中的第一句
9)什么时候虚拟机会自动添加一个默认构造器?
当类中没有显式定义任何构造器的时候,虚拟机会自动添加一个无参的构造器
10)实例成员和静态成员的区别?
实例成员:是属于对象实例的,用对象.成员名称语法调用
静态成员:和对象实例无关,是属于类本身的,用类名.成员名称语法调用
11)静态初始化块statci{}的执行时机是什么时候?
在类被加载的时候,仅执行一次。
12)静态方法可不可以直接调用同一个类中的非静态方法?
不可以,静态方法不能直接调用一个非静态成员,需要用对象调用。
13)包是什么?
包实际上就是物理上的文件夹,可以把类放到不同的包中。
14)把一个类放到包中,需要在类中加上什么语句?
需要加上包声明package语句,必须写在源文件的第一句。
15)什么时候需要导入类?用什么语句?
当使用的类和当前类并不在同一个包中的时候,用import语句导入。
16)默认包中的类可以导入吗?
不可以,不在默认包中的类无法使用默认包中的类。
17)java中哪个包中的类是自动导入的?
java.lang包
18)什么叫做完整类名?
顶层包名.子包名.类名
19)静态导入语句有什么作用?
在使用类中的静态成员的时候前面不需要加类名前缀。
20)局部变量和全局变量的区别?
区别
局部变量
全局变量
声明位置方法或块内部方法外类内部访问权限修饰符没有访问权限有访问权限默认值没有默认值有默认值使用形式直接使用
对象调用作用域在方法或语句块内部整个类
生命周期
进入方法或语句块创建退出方法或语句块销毁
随着对象的创建而创建随着对象的销毁而销毁
21)赋值语句赋给目标的是值还是引用?
如果是基本类型则赋的是值本身,引用类型则赋的是引用地址
第5章继承和多态
1)类的继承是谁继承谁?
是子类继承了父类,子类也称为派生类,父类也称为超类或基类2)子类继承了父类的什么东西?
子类可以继承父类的数据域(属性),方法,但构造器不能继承
3)私有成员能被子类继承吗?
能继承,但是由于访问权限的控制,在子类中不能直接使用父类的私有成员
4)Object是什么类?
这个所有类的根类,任何类如果没有写显式的继承语句,默认都是直接继承Object类的
5)java中是单继承还是多继承?
是单继承,一个子类只能有一个父类
6)访问权限修饰符有几种,访问的范围又是多大?
有四种:
private:私用只能在被类中被访问
default:默认只能被同一个包中的类访问
protected:受保护的只能被同一个包中的类和不同包中的子类访问public:公有可以被任何类访问
7)覆盖方法的规则有哪些?
子类覆盖方法和父类被覆盖方法的方法返回类型,方法名称,参数列表必须相同子类覆盖方法的访问权限必须大于等于父类的方法的访问权限方法覆盖只能存在于子类和父类之间
子类覆盖方法不能比父类被覆盖方法抛出更多异常
8)参数列表是否相同从哪几方面看?
从三方面看:参数个数,类型和顺序,需要注意的是参数的名字不相同是无所谓的
9)覆盖方法的规则有哪些?
方法名相同
方法的参数类型,个数,顺序至少有一项不同方法的返回类型和修饰符均不受**
10)可变长参数的声明格式是什么?实际上是什么类型的?
类型…变量,实际上是一个一维数组
11)this和super是作什么用处的?
this:本身代表当前的对象引用,可以用this.成员名称调用当前对象的属性和方法,如果属性和局部变量重名,可以用this.属性名和局部变量区分开。也可以用this()语法调用本类重载构造器。super:本事是一个特殊关键字,可以用super.成员名称调用从父类继承的属性和方法,也可以用super()语法调用父类构造器。
12)super代表子类中的父类对象引用吗?
不,这个错误的说法,super不代表任何对象引用,仅仅是一个关键字3)什么时候子类构造器会自动调用父类无参构造器?
当子类构造器中没有任何显式构造器调用的时候,即既没有this()调用也没有super()调用的时候
14)一个父类类型的引用变量可以引用一个子类的实例吗?
可以,这个引用变量是一个多态对象
15)多态对象有什么特点?
多态对象只能使用父类的成员,但如果多态对象使用了被子类覆盖的方法,则会动态绑定使用子类的成员,称为虚拟方法调用
16)引用类型之间的类型转换需要遵循哪些规则?
自动转换:从子类到父类的类型可以自动转换强制转换:从父类到子类的类型要强制转换无继承关系的类型转换是非法的
17)instanceof操作符是作什么用处的?
可以判断一个对象的类型是否是某一个类的类型或子类,也可以判断这个对象的类型是否是一个接口的实现类
18)toString方法什么时候会自动被调用?
在打印语句中传入引用类型的对象或者对象和字符串作连接时
19)默认的equals方法实现的是比较内容还是比较引用地址?
在Object中是比较引用地址。
20)覆盖equals方法和hashCode方法有什么规则?
必须保证当两个对象equals比较为true的时候,返回的hashCode相同,当比较为false的时候,返回的hashCode不同
21)java中有几个包装类?
有8个包装类,正好对应8种基本数据类型。
分别是:BooleanByteShortIntegerLongCharacterFloatDouble
22)装箱和拆箱分别是什么意思?
装箱指的是把基本类型包装成包装类的引用类型
拆箱指的是把包装类形式的引用类型转换为基本类型例如:
IntegerobjInt=newInteger(10);//装箱inti=objInt.intValue();//拆箱
23)JDK1.4和1.5的装箱和拆箱有什么区别?
自动拆装箱,例如:
IntegerintObj=10;//自动装箱inti=intObj 5;//自动拆箱24)final修饰符如何使用,使用了final修饰符有什么特点?
final修饰符可以修饰类,方法,变量final类为最终类,不能被子类继承final方法为最终方法,不能被子类覆盖final变量为常量,只能赋一次值
25)abstract修饰符如何使用,使用了abstract修饰符有什么特点?
abstract修饰符可以修饰类和方法
abstract类为抽象类,是不能创建对象的
abstract方法为抽象方法,只有方法的声明,没有具体的实现需要注意的是:
有抽象方法的类一定是抽象类抽象类不一定有抽象方法
抽象类也有构造器,但不能创建对象实例
26)abstract不能和哪些修饰符配合使用?
不能和private,static,final一起使用
27)可以在非抽象方法中调用抽象方法吗?
可以,模板方法设计模式就是典型的这种调用