黑马程序员技术交流社区

标题: 关于面向对象一些基础知识点总结 [打印本页]

作者: 墨晓生    时间: 2016-8-27 22:11
标题: 关于面向对象一些基础知识点总结
本帖最后由 墨晓生 于 2016-8-27 22:20 编辑

局部变量和成员变量的区别:
1)定义位置不同:成员变量定义在类中方法外,局部变量定义在方法内或者方法的声明上。
2)作用范围不同:成员变量在整个类中有效,局部变量在其所在的方法有效。
3)内存位置不同:成员变量存放在堆内存中,局部变量存放在栈内存中。
4)初始化值不同:成员变量是有默认的初始化的值的;局部变量没有默认值,必须先赋值才能使用。
5)生命周期不同:成员变量随着对象的存在而存在,随着对象的消失而消失;局部变量随着方法的调用而存在,方法调用完毕而消失。
变量的使用顺序?
:就近原则。先在局部找,有就使用,局部找不到在本类中找,有就使用,本类找不到就去父类找,有就使用,找不到就编译失败。
类和对象的关系?
答:类是用来描述事物的属性和行为的,是一个抽象的概念;对象是类的实例化。
java描述事物最基本的单位?
答:类
什么叫面向对象?
答:面向对象是一种编程思想,它是基于面向过程的,强调的用对象来完成各种事情(功能)。说到面向对象不得不提的就是他的三大思想特点1,2,3,
自己举例说明:厨师做饭,女朋友洗衣服。。。。。(最好能结合当时的场景)
总结:万物皆对象。
什么是封装?封装的原则?好处?
答:封装就是隐藏对象的属性和实现细节,仅对外提供公共的访问方式。。
原则:(1)将不需要对外暴露的信息隐藏;(2)对外提供公共的访问方式。
好处:将变化隔离;提高了安全性;便于使用,提高了重用性。
封装就是私有,对吗?为什么?
答:不对,private仅仅是封装的一种体现形式。我们常用的类,方法,函数也是封装。
Java中参数传递的问题:
答:Java中只有值传递,引用传递传递的是地址值。
如果是基本数据类型,传递的是值,
如果是引用数据类型,传递的地址值(String类型作为方法的形参时,传递的是值)。
构造方法,set方法都可以给成员变量赋值,这两种赋值方式有什么区别?
答:构造方法主要作用是用来给对象初始化,赋值只是他的兼职工作,也可以不用赋值。
        Set方法只能用来赋值,在原有对象的基础上赋值。
static关键字的特点?注意事项是什么?有什么好处和弊端?
答:(1)被static修饰的变量和方法随着类的加载而加载(2)优于对象存在(3)能够被类名点的形式直接调用(4)资源共享。
注意事项:静态方法中不可以定义this、super关键字,因为静态优先于对象存在;静态只能覆盖静态。
好处:static能够被类名直接调用,定义的是对象的共性内容,不用每个对象单独定义,节省空间。弊端:生命周期过长。
类变量和实例变量的区别?
答:(1)所属不同:类变量属于类,是对象的共性内容;实例变量属于对象,是对象的特性内容。
2)存储位置不同:类变量存在方法区的静态区;实例变量存在堆内存中。
3)生命周期不同:类变量随着类的加载而存在,随着类的消失而消失;实例变量随着对象的存在而存在,随着对象的消失而消失。
4)调用方式不同:类变量既能被类名点的形式调用,也能被对象点的形式调用;而实例变量只能被对象点的形式调用。
构造方法能不能重载?
答:可以。因为重载与方法的返回值类型无关
静态代码块和构造代码块的区别?
答:(1)静态代码块属于类,给类进行初始化,类一加载就会执行,只执行一次,经常用于加载驱动。
2)构造代码块给对象进行统一初始化,每创建一次就会执行一次。里边放的是构造方法的共性内容。
什么是继承?
答:当多个类中有很多共性的内容时,我们可以把这些共性内容抽取出来封装成一个类,让这些类与这个封装的类产生关系。这种关系就是继承。
继承的的特点和好处,弊端?
答:特点:类与类之间的继承:只能单继承不能多继承,但是可以多层继承。
                  接口与接口之间的继承:既可以单继承也可以多继承。
好处:(1)提高了代码的复用性(2)提高了代码的维护性(3)提高了代码的扩展性。(4)让类与类产生了关系,是多态的前提。
弊端:增强了类与类的耦合性。
this和super 的区别?
答:this代表本类当前对象的引用,super代表当前对象父类的内存空间标识(可以理解为父类引用
Super()和this()在构造方法能同时使用吗?
:不能,super()调用的是父类的空参构造,this()调用的是本类的空参构造,他们都要放在第一行,所以不能同时使用。
Super关键字和this关键字能否在构造函数中共存?
答:能。
为什么每个构造函数中第一行都有默认的super()?
用于子类对象访问父类前,对父类数据进行初始化。
55.为什么默认的super()都是空参的呢?
因为Object类是所有 类的父类,Object中只有一个空参构造。
构造方法的特点?
答:(1)方法名和类名完全一致2)没有返回值类型,连viod都没有。(3)没有明确返回值,但是可以有return关键字;
this的作用?
答:(1)区别局部变量和成员变量(2)代表本类当前对象的引用(3)也可以用于构造方法的调用。
子父类都有静态代码块,构造代码块,构造方法,如果创建子类对象,那么他们六者之间的执行顺序是什么?
答:父类的静态代码块先执行,再执行子类中的静态代码块;接着执行父类的构造代码块和父类的构造方法,最后执行子类的构造代码块和构造方法。
final修饰的变量的初始化时机:
答:a.未被static关键字修饰
                * 可以显示初始化
                * 可以在构造方法中初始化
b.被static修饰
                * 可以显示初始化
                * 可以在静态代码块中初始化
                * 不能在构造方法中初始化
final如果修饰局部变量,会发生什么事情?
答:基本类型,是值不能被改变,引用类型,是地址值不能被改变,对象中的属性可以改变。






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