2020-6-01(JOO理论基础)

1、做数据比较时,什么时候用“==",什么时候用"equals"?
==是比较两个变量的内容是否相等。比较基本数据类型变量,是比较两个变量的值是否相等。比较引用数据类型的变量,是比较两个变量是否引用同一个对象。
Equals方法在Object中定义,只能用于比较引用数据类型。默认也是比较引用是否相等,但是,很多时候比较对象,更多的是比较属性是否相等。这时可以重写equals方法,按定义规则进行两个对象属性的比较。

2、单继承和多继承的优缺点是什么?
 单继承——优点:
 结果层次清晰,设计上更容易把握父类的唯一共性;
 单继承——缺点:设计上丰富度降低;
 多继承——优点:可同时具有父类的多个特性,丰富度增加;
 多继承——缺点:当继承的多个父类中,父类之间有相同的特征,此时多继承设计的混乱,继承结构也变得复杂。
 
3、抽象类和接口的区别是什么?
相同点:
1、都不能实列化(都不能new出对象);
2、抽象类变量只能引用子类对象;接口类变量只能引用实现类对象;
3、若一个类继承一个抽象类,则必须重写该抽象类中的所有抽象方法,否则该类只能是抽象类;同样一个类要实现一个接口,则必须重写该接口中的所有抽象方法,否则该类只能是抽象类;
不同点:
1、抽象类中有构造方法,但接口中没有(只能有抽象行为,常量;JDK1.8以后有static方法和default方法);
2、抽象类是单根继承;接口可以多继承
3、抽象类的属性,变量、常量、静态、非静态都可,访问修饰符也可任意;   接口中只能是:public static final (公共的静态常量);
4、抽象类的方法,抽象类与非抽象类、静态与非静态都可,访问修饰符也可任意;   接口中,JDK1.8以前只能定义抽象方法;JDK1.8以后可以定义:static方法和default方法;

4、静态变量和非静态变量的区别?
1、静态变量(独立在对象之外,改变静态变量,会影响所有对象) 非静态变量(也称为普通属性或成员变量,包含在对象之中,不同的对象之间,成员变量彼此独立,改变一个对象的成员变量,不会影响别的对象);
2、静态变量在类加载时产生,产生在对象之前。而成员变量随对象产生而产生,随对象销毁而销毁;
3、静态变量可以通过对象或类名的方式访问,所以叫类变量。而成员变量只能通过对象.的方式访问;
4、静态变量和静态方法的产生无需依赖于对象,所以,用null调用静态变量或静态方法不会抛异常。而成员变量依赖于对象的产生,从属于对象,用null调用成员变量和成员方法时会抛出空指针异常;

5、列出类与类的关系有哪些?各代表什么含义?
1、is-a(继承、泛化):出现在父类与子类之间;是,表示继承关系	。比如,狗是动物,表   示狗继承动物,狗是动物的一种;
2、has-a:(1)、聚合—— 一个类是另一个类的属性,是整体和局部的关系;(2)、组合—— 一个类是另一个类的属性,是整体中不可分割的一部分,是强聚合。比如,人和手;
3、use-a(依赖):一个类是另一个类方法的参数,一个类是一个类方法的局部变量,一个 类是一个类方法的返回类型;
4、Is-like-a(实现——接口和实现类的关系):一个类实现一个接口;  注:依赖、聚合、组合,合称关联;

6、什么是构造方法,构造方法的作用是什么?
方法名与类名相同,且没有返回类型;
初始化成员变量;返回对象的引用;为对象在堆空间分配空间;

7、什么是重载?什么是重写?
在同一个类中,方法名相同,参数列表不同(顺序、数据类型、数量),和方法参数名和方法返回类型无关;出现在extends关系(父类和子类之间),方法相同、返回类型相同、参数列表相同;子类重写方法访问修饰符比父类大或相同;子类重写方法抛出的异常要小于父类或等于;

8、访问修饰符有哪些各自作用范围是什么?
Public,公共的:在一个工程里,所有包可以访问;Proctected,受保护的:同包、同包非子类、非同包子类可以访问(其中的子类中访问,只能通过this.来访问,不能通过new对象来访问);
默认:同包可以访问;
Private,私密的,类中本可以访问;

你可能感兴趣的:(笔记)