黑马程序员技术交流社区

标题: 面向对象需要理解 [打印本页]

作者: tao13yang    时间: 2015-7-25 23:41
标题: 面向对象需要理解
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.继承中代码的执行顺序?
          构造方法(对象一建立就运行,给对象初始化,)
          构造代码块(对象一建立就运行,给所有对象进行统一初始化,且优先于构造方法)
          静态代码块(随类的加载而加载,只运行一次,优先于主函数,用于给类初始化)
          父类静态代码块----子类静态代码块----父类构造代码块----父类构造方法----子类构造代码块----子类构造方法

作者: umbriel    时间: 2015-7-25 23:45
都是些基本概念,代码敲多了就都懂了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2