A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

1,什么是面向对象?
                1、面向对象是基于面向过程,面向对象强调的是对象,面向过程强调的是过程(函数)。
                2、聊到面向对象,不得不提的就是它的三个思想特点:
                        A:更符合人们的思考习惯。
                        B:把复杂的事情变得简单化。
                        C:把程序员从执行者变成了指挥者。
                3、举例:
                         摊煎饼,买电脑(最好是能结合当时的场景来说)
                4、万物皆对象。
2,面向对象的特征?
        封装,继承,多态(顺序不能变)
3,局部变量和成员变量的区别:
        1、在类中的定义位置不同。
                局部变量:在方法中或者方法形参上。
                成员变量:在类中,方法外。
        2、在内存中的存储位置不同。
                局部变量:和方法相关。随着方法的调用而存在,随着方法的调用完毕而消失
                成员变量:和对象相关。随着对象的创建而存在,随着对象的消失而变为垃圾被回收
        3、生命周期不同。
                局部变量:和方法相关。
                成员变量:和对象相关。
        4、初始化值不同。
                局部变量:没有默认值,必须先定义,在赋值,然后才能使用。
                成员变量:有默认值。
                        整型:0
                        浮点型:0.0
                        字符:'\u0000'
                        布尔:false
                        引用类型:null
4,匿名对象是什么?应用场景是什么?
        匿名对象是没有名字的对象
        可当作实际参数传递或者对方法一次调用
5,封装是什么?用什么关键字?好处与弊端
        封装是隐藏实现细节,对外提供公共的访问方式
        通过private修饰
        好处:
                1隐藏实现细节,提供公共的访问方式
                2提高了代码的复用性
                3提高安全性。
6,封装指的就是private修饰,这句话对吗?为什么?
        不对,因为private仅仅是封装的一种体现,我们学过的类,函数都是封装的体现。
7,公共的访问方式是什么?
        getXxx() 和 setXxx()方法
8,get() 和 set()必须成对出现吗?
        不一定,看需求,如果只赋值就写set(),如果只获取值就写get().
        因为我们现在还不是特别熟练,所以不管用不用,get()和set()都写上。
9,this关键字是什么?this关键字的应用场景?
        this代表当前对象的引用
        应用于区分局部变量和成员变量重名的时候
10,构造方法的作用是什么?构造方法的特点是什么?构造方法的注意事项是什么?构造方法中可不可以写return语句呢?
        作用:给对象的属性进行初始化
        特点:1方法名与类名一致
                 2没有明确返回值类型,连void都没有
                 3没有返回值,但可以有return
        注意事项:1如果我们没有给构造方法,系统会默认给一个无参构造
                         2只要我们给了任何构造方法,系统就不再给无参构造
                         3构造方法不能通过对象.的形式调用
11,给成员变量赋值有几种方式?
        两种,构造方法和set,前者主要用来创建对象的,赋值只是一个捎带动作
        后者只能用来赋值
12,一个类的成员变量初始化过程 Student s = new Student();
        系统先给默认值,再执行显示初始化(如果有),构造方法最后对成员变量初始化
13,static关键字是什么?有什么特点?什么时候用呢?有什么注意事项?
        static是静态修饰符
        特点:1随着类的加载而加载
                 2优先于对象存在
                 3被该类的所有对象共享
                 4可以通过类名.调用也可以通过对象.调用
        如果某个成员变量是被所有对象共享的,那么他就应该被static修饰,总结共性用静态,特性用非静态
        注意事项:
                1,静态方法中是没有this关键字的。
                2,静态方法只能(直接)访问静态成员变量和静态成员方法。
                3,静态方法如果想使用非静态的内容,必须先创建对象,然后才能使用。
14,静态变量和成员变量的区别:
        1、所属不同。
                静态变量:所属的是类
                成员变量:所属的是对象,也叫实例变量
        2、内存存储位置不同。
                静态变量:静态区
                成员变量:堆内存
        3、内存中出现的时机不同
                静态变量:随着类的加载而加载
                成员变量:随着对象的创建而存在,对象的消失而消失
        4、调用不同。
                静态变量:能用类名调用,也能用对象名调用
                成员变量:只能通过对象名调用
15,代码块是什么?代码块的分类和各自特点?
        代码块是由{}括起来的内容
        分类:
                局部代码块:
                        定义在局部位置,作用是让变量尽可能早的从内存中消失,节约内存,提高效率。
                构造代码块:
                        定义在成员位置。
                        作用:里边存储的是所有构造方法的共性内容,因为它是优先于构造方法执行的,从而来提高代码的复用性和编写效率。                               
                静态代码块:
                        被static修饰的代码块。
                        作用:一般是用来加载驱动的,因为它是随着类的加载而执行。
                        特点:静态代码块只执行一次(类文件只加载一次的情况下)。
                同步代码块:
                        被synchronized修饰的代码块。
16,子父类中,都有静态代码块,构造代码块,构造方法,那么他们六者之间的执行顺序是:
        第一次创建子类对象:父类静态代码块--子类静态代码块--父类构造代码块--父类构造方法----子类构造代码快--子类构造方法
        第二次创建子类对象:父类构造代码块--父类构造方法--子类构造代码块--子类构造方法
17,继承概述以及好处与弊端
        继承就是通过extends关键字让类与类之间产生 子父类关系,这种现象就叫继承
    继承的好处
                1复用性。
                2维护性。
                3让类与类之间产生关系,是多态的前提。
        弊端:耦合性太强了
18Java中继承的特点
        类与类之间的继承:只能单继承不能多继承,可以多层继承
        接口与接口:可以单继承也可以多继承
19,继承的注意事项:
        A:子类只能继承父类的所有非私有成员(成员变量和成员方法)。
        B:子类不能继承父类的构造方法,但是可以通过super关键字去访问父类的构造方法。
        C:不用为了使用部分功能而去使用继承。
        D: 所有的类都直接或间接继承自Object类,Object类是所有类的父类。Object类中只有一个无参构造。
20,什么时候使用继承?
        只有当类与类之间满足"is a"的关系的时候,就可以考虑使用继承。
        A is a B :        A是子类,B是父类
        B is a A :        A是父类,B是子类
21,继承中的成员变量访问特点
        在子类方法中访问一个变量,使用变量遵循一个“就近原则”。局部位置有就使用,没有就去本类的成员位置找,有就使用;没有就去父类的成员位置找,有就使用,没有就报错
22,this和super的区别:
        this:代表本类当前对象的引用。
        super:代表当前对象父类的引用。
        A:调用成员变量与方法:
                this.成员变量: 即可以调用本类成员变量与方法,也可以调用父类成员变量与方法(本类没有)
                super.成员变量:只能调用父类的成员变量
        B:调用构造方法:
                this( 参数 ): 调用本类的其他构造
                super( 参数 ): 调用的父类的其他构造
23,假如父类没有无参构造方法,子类应该怎么办?
        第一种方式:通过 this(参数) 的形式调用本类的其他构造
        第二种方式:通过 super(参数) 的形式调用父类的带参构造
24,方法重写和方法重载的区别?方法重载能改变返回值类型吗?
        Overload 同一个类中,出现方法名相同,参数列表不同(个数,对应的类型)的两个或两个以上的方法时称为方法                         重载,方法重载与返回值的数据类型无关。
        Override 子类出现和父类一模一样的方法时,称为方法重写,返回值类型也必须完全一样(或者有子父类关系)
25,什么时候使用方法重写?重写的注意事项
        当子类需要使用父类的功能,并且功能主体又有自己特有功能的时候,就可以考虑使用方法重写
        注意事项:
        1、父类的私有方法不能被子类重写。
        2、子类重写的时候,方法的访问权限不能低于父类方法的访问权限。
                权限修饰符:
                        (从小到大) private --> 默认 --> protected        --> public
        3、父类的静态方法不能被子类的非静态重写。
           静态只能覆盖静态(严格来讲,算不上重写)。

评分

参与人数 1黑马币 +1 收起 理由
Hi.。 + 1 赞一个!

查看全部评分

2 个回复

倒序浏览
收藏。。
回复 使用道具 举报
thriver2010 来自手机 中级黑马 2015-12-7 23:39:47
藤椅
收藏,太好了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马