1.什么是面向对象?面向对象和面向过程的区别?
面向对象是相对于面向过程而言的,他们都是一种思想。举例:吃饭
区别:面向过程注重的是具体实现的过程,面向对象注重的是结果,它让我们从执行者变成了指挥者,把复杂的事情简单化,更加符合人的逻辑思维。
2.继承的好处?
继承:把多个类中的相同属性和行为进行抽取,封装到一个类中,在建立新的类时,不需要重头做起,继承刚刚的那个类即可;
什么时候用:1.存在is-a(什么是什么的一种)的关系时;2.不要为了继承部分功能而去继承
特点:支持单继承,不支持多继承。但是支持多层继承。
好处:1.提高的代码的复用性,2.让类与类产生了关系,才有了多态。
3.Static关键字的特点?(用于修饰类的成员---成员变量、成员方法、代码块)
特点:a.随类的加载而加载;b.优先于对象存在;c.被所有对象所共享;d.可以直接被类名调用。
注意:1.静态的方法中只能访问静态的成员(没有被静态修饰的成员需要先创建对象才能访问,而静态方法在被调用时可以不创建任何对象)
2.静态方法中不可以写this(静态的成员是随类的加载而加载的,而this是对象创建时才存在的)
3.静态的类容可通过对象调用,也可以通过类名调用。
被修饰的成员变量区别:(实例对象、类变量)
1.存放位置不同(随对象建立而存在于堆;随类的加载而存在于方法区)
2.生命周期不同(随对象的消失而消失;随类的消失而消失)
什么时候使用:
1.类变量:当对象中出现共享的数据时;
2.静态方法:当方法内部没有访问到非静态的数据(对象特有的数据时)。
4.this与super的区别?
this:1.区分基本变量与成员同名的情况;2.调用构造方法(只能在构造方法中使用this调用构造方法,不能在成员方法中使用,必须位于第一行,且只 能出现一次)
super:代表父类的存储空间标识。(可以理解为父亲的引用) 它和this的用法相似,他们不能同时存在,因为他们都必须在第一行,因为初始化得先做
a:成员变量
this.变量 -- 本类的
super.变量 -- 父类的
b:构造方法
this(...) -- 本类的
super(...) -- 父类的
c:成员方法
this.方法名() -- 本类的
super.方法名() -- 父类的
5.JAVA中支持多继承吗?
不支持多继承,因为容易出现安全隐患。当多个父类中定义了相同的功能,而功能的内容不同时,子类对象不确定定要运行哪一个。
6.final关键字的特点
用于修饰类,方法,变量。(最终的)
a.被修饰的类不可被继承(为了避免被继承被子类复写)
b.被修饰方法不可被复写;
c.被修饰的变量时一个常量,只能赋值一次
d.局部内部类,只能访问该局部被final修饰的局部变量。
7.抽象类和接口的区别?
抽象的类:多个类中出现相同的功能,但功能主体不同,这时可以对功能的定义进行向上抽取,而不抽取主体。用abstract来修饰
接口:interface,一种特殊的抽象类,接口里面的方法都是抽象的。用implements来实现。
区别:抽象的方法一定在抽象的类中,而抽象的类中不一定有抽象的类或接口;
接口里面的方法必须全部为抽象。
类可以继承类,可以实现接口,可以继承类的同时实现多个接口;而接口只能被实现或继承接口;
子类继承抽象的类,或者实现接口,必须重写所有的抽象方法。
8.什么是单利设计模式?
它是指在设计一个类时,需要保证在整个程序运行期间针对该类只存在一个实例对象。
9.什么是多态?
对象在不同时刻表现出来的不同状态。
前提条件:a.要有继承或实现关系;b.要有方法重写;c.要有父类引用指向子类对象。
针对引用类型:
编译期间状态-------运行期间状态
成员特点:方法有重写而变量没有
A.成员变量 (编译看左,运行看左)
B.成员方法 (编译看左,运行看右)
好处:提高的代码的扩展性和可维护性。
弊端:父类引用不能使用子类特有的功能。
10.什么是封装?
隐藏对象的属性和实现细节,仅对外提供公共的访问方式。私有仅仅只是封装的一种体现形式。
好处:将变化隔离,便于使用,提供代码健壮性、
永远写上无参构造方法。
11.继承中代码的执行顺序?
构造方法(对象一建立就运行,给对象初始化,)
构造代码块(对象一建立就运行,给所有对象进行统一初始化,且优先于构造方法)
静态代码块(随类的加载而加载,只运行一次,优先于主函数,用于给类初始化)
父类静态代码块----子类静态代码块----父类构造代码块----父类构造方法----子类构造代码块----子类构造方法
|
|