Java面向对象

1.什么是面向对象?

面向对象是一种使用封装、继承、多态、抽象等思想进行软件的分析和开发的方法,而 java就是一门面向对象编程的语言。

2.什么是类?
现实世界是由很多对象组成的,基于对象抽出了类
3.什么是对象?
对象:真实存在的单个的个体,类:类型/类别,一类个体
4.类和对象的关系?
类是对象的抽象,而对象是类的具体实例。
类是抽象的,不占用内存,而对象是具体的,占用存储空间;类和对象是抽象与具体的关系
5.成员变量又可分实例成员变量和静态成员变量以及各自的特点?
实例成员变量:属于对象的,存在堆中;有几个对象就有几份实例变量;必须通过对象名.来访问
静态成员变量:属于类的,存在方法区中;只有一份;常常通过类名.来访问
6.什么是方法形参和实参?
形参,就是形式参数,用于定义方法的时候使用的参数,是用来接收调用者传递的参数的。
实参,就是实际参数,用于调用时传递给方法的参数。实参在传递给别的方法之前是要被预先赋值的。
7.this 的作用?
代表本类当前对象的引用;既可以调用本类成员变量、成员方法,也可以调用本类的构造方法。;用于区别局部变量和成员变量
8.什么是封装?封装的原则?好处?
封装就是隐藏对象的属性和具体实现细节,仅对外提供公共的访问方式。
原则:将不需要对外暴露的信息隐藏;对外提供公共的访问方式。
好处:将变化隔离;提高了安全性;提高了代码代码重用性,便于使用。
9.构造方法的特点?
方法名和类名完全一致;没有返回值类型,连 viod 都没有;没有明确的返回值,但是可以有 return 关键字;
10.静态代码块和构造代码块的区别?
静态代码块随着类的加载而加载,一般是用来加载驱动的。只在类加载的时候执行一次,优先于构造方法执行;构造代码块里边放的是所有构造方法的共性内容,为了简化书写,调高效率。每创建一次对象,就执行一次,它是优先于构造方法执行的。
11.类变量(静态变量)和实例变量(对象变量,成员变量)的区别?
所属不同:类变量属于类,是对象的共性内容;实例变量属于对象,是对象的特性内容。
在内存中位置不同:类变量存在方法区的静态区;实例变量存在堆内存中。
 生命周期不同:类变量随着类的加载而存在,随着类的消失而消失;实例变量随着对象的存在而存在,随着对象的消失而消失。
调用方式不同:类变量既能被类名点的形式调用,也能通过对象点的形式调用;而实例变量只能通过对象点的形式调用。
12.什么是继承?
当多个类中有很多共性的内容时,我们可以把这些共性内容抽取出来封装成一个类,让这些类与这个封装的类产生关系。这种关系就是继承。
13.继承的的特点和好处,弊端?
特点:可以从以下两方面来讲:类与类之间的继承:只能单继承不能多继承,但是可以多层继承。接口与接口之间的继承:既可以单继承也可以多继承。
好处:提高了代码的复用性、维护性、可扩展性; 让类与类产生了关系,是多态的前提。
弊端:增强了类与类的耦合性。
14.this 和 super 的区别?
this 代表本类当前对象的引用,谁调用我,我就代表谁。super 代表当前对象父类的内存空间标识。
15.什么是多态?使用多态的好处以及弊端?
多态是同一个行为具有多个不同表现形式或形态的能力。
多态的好处:提高了代码的维护性(继承保证);提高了代码的扩展性(由多态保证)
多态的弊端:不能使用子类的特有功能。
16.方法重载和方法重写区别?
方法重载:同一个类中,方法名相同,参数的类型、顺序和个数不同,与返回值类型和方法访问修饰符无关
方法重写:不同类中,发生在继承类中,方法名称、参数类型、返回值类型全部相同,被重写的方法不能拥有比父类更严格的权限
17.throw 和 throws 关键字的区别?
throw 用来抛出一个异常,在方法体内。语法格式为:throw 异常对象。
throws 用来声明方法可能会抛出什么异常,在方法名后;语法格式为: throws 异常类型 1,异常类型 2...异常类型 n。
18.异常的两种类型,Error 和 Exception 的区别?
error 表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能处理这样的情况。
exception 表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情况。
19.final, finally, finalize 的区别?
final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。
finally 是异常处理语句结构的一部分,表示总是执行。
finalize 是 Object 类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收
20.接口的特点?
接口不可实例化,可结合多态进行使用
接口里的成员属性全部是以 public、static、final修饰符修饰;接口里的成员方法全部是以 public、abstract修饰符修饰;接口里不能包含普通方法子类继承接口必须实现接口里的所有成员方法,除非子类也是抽象类
21.抽象类和接口的区别?
抽象类:是一个不能被实例化的类,因为它其中存在抽象方法,但它的其它行为和一个普通类没什么不同。
接口:是 java 为了弥补不能多继承提供的概念,接口之间支持多继承,接口中只允许存在公有静态常量或公有的抽象方法,一个类可实现多个接口,从而扩展不同的功能。
posted @ 2019-12-24 10:39  小白aa  阅读(290)  评论(0)    收藏  举报