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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© taozhihui 中级黑马   /  2016-9-21 19:01  /  402 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1.面向对象思想的特点
                (1)是一种更符合我们思想习惯的思想(懒人思想,我把事情自己不做,交给别人去做)
                (2)可以将复杂的事情简单化(对使用者来说简单了,对象里面还是很复杂的)
                (3)角色发生了转换,将我们从执行者变成了指挥者
                (4)就是不断的创建对象,使用对象,指挥对象做事情。(如果有对象,直接用对象,对我们直接提供服务)
        2.面向对象的特征
                (1)封装
                (2)继承
                (3)多态
        3.类与对象的关系
                (1)类是一组相关的属性和行为的集合(我们班所有的同学都具备相同的属性和行为,比如:姓名,年龄,学习,这样就把所有的学生成为学生类)
                (2)对象是该类事物的具体体现(说某个同学时,他都具备自己特有的属性和行为)
                (3)类是抽象(抽取出同类事物中相同的、相似的部分就叫抽象)的具体的或者是类是一般的,对象是特殊的
                (4)类中可以包含成员变量、类变量、成员方法、类方法、构造函数、构造代码块、静态代码块等
        4.成员变量和局部变量的区别?
                (1)在类中的位置不同
                        a.成员变量:在类中方法外
                        b.局部变量:在方法定义中或者方法声明上
                (2)在内存中的位置不同
                        a.成员变量:在堆内存(成员变量属于对象,对象进堆内存)
                        b.局部变量:在栈内存(局部变量属于方法,方法进栈内存)
                (3)生命周期不同
                        a.成员变量:随着对象的创建而存在,随着对象的消失而消失
                        b.局部变量:随着方法的调用而存在,随着方法的调用完毕而消失
                (4)初始化值不同
                        a.成员变量:有默认初始化值
                        b.局部变量:没有默认初始化值,必须定义,赋值,然后才能使用。
        5.private关键字的特点
                (1)封装是指隐藏对象的属性和实现细节,仅对外提供公共访问方式,private是实现封装的一种形式
                (2)private是一个权限修饰符,可以修饰成员变量和成员方法
                (3)被private修饰的成员,只能在本类中访问
                (4)当成员变量被private关键字修饰后,需要提供对应的get和set方法供外部访问
        6.谈谈你对this的理解?
                (1)this只能代表本类对象
                (2)this代表所属函数(方法)的所属对象
                (3)谁来调用我,我就代表谁
                (4)this可用于区分成员变量和局部变量同名的情况
               
二.day02
        1.构造方法的特点?
                (1)构造方法主要作用是给对对象的属性进行初始化
                (2)方法名与类名完全一致,没有返回值类型,连void都没有
                (3)构造方法也是方法,只是比较特殊,是在创建对象后马上调用,后期不能单独调用,既然是方法,就可以重载
                        a.方法名相同
                        b.参数列表不同(数量不同,顺序不同,类型不同)
                        c.与返回值类型无关
                (4)如果自定义类中没有提供构造方法,系统将自动提供一个无参构造方法,如果我们给出了构造方法,系统将不再提供默认的无参构造方法,要想再使用空参构造,必须显示给出
        2.java中创建一个对象的过程?
                (1)将类的字节码文件加载进内存
                (2)声明一个该类类型引用s
                (3)在堆内存创建对象,
                (4)给对象中属性默认初始化值
                (5)属性进行显示初始化
                (6)构造方法进栈,对对象中的属性赋值,构造方法弹栈
                (7)将对象的地址值赋值给s
        3.谈谈你对static关键字的理解?
                (1)被static关键字修饰的成员,属于该类中所有对象的共享内容可以直接用类名调用,也可以用对象调用,但是建议用类名调用
                (2)随着类的加载而加载,优先于对象存在:随着字节码文件的加载而加载的,那时候还没有对象呢
                (3)静态修饰的内容一般我们称其为:与类相关的,类成员(静态变量:类变量,静态方法:类方法)
                (4)在静态方法中是没有this关键字的(因为this指的是一个具体的对象,而静态在加载到内存时还没有具体的对象)
                (5)静态方法只能访问静态的成员变量和静态的成员方法,非静态的成员方法既可以方法静态的成员方法和成员变量,又能访问非静态的成员方法和成员变量
                        简单记忆:静态不能访问非静态
        4.静态变量和成员变量的区别?
                (1)所属不同
                        a.静态变量属于类,所以也称为为类变量
                        b.成员变量属于对象,所以也称为实例变量(对象变量)
                (2)内存中位置不同
                        a.静态变量存储于方法区的静态区
                        b.成员变量存储于堆内存
                (3)内存出现时间不同
                        a.静态变量随着类的加载而加载,随着类的消失而消失
                        b.成员变量随着对象的创建而存在,随着对象的消失而消失
                (4)调用不同
                        a.静态变量可以通过类名调用,也可以通过对象调用
                        b.成员变量只能通过对 象名调用
三.day03
        1.代码块的分类?
                (1)构造代码块:每次执行构造方法之前执行
                (2)静态代码块:随着类的加载而执行,而且只执行一次
                (3)局部代码块:方法内部定义的代码块叫局部代码块,随着方法的执行而执行
                (4)同步代码块:在多线程中为了解决线程安全问题
        2.谈谈你对继承的理解?
                (1)继承让类与类之间产生关系,子父类关系
                (2)继承提高了代码的复用性和维护性,单同时增加了类与类之间的耦合性
                (3)java只支持单继承,不支持多继承,但是Java支持多层继承
                (4)继承中的注意事项:
                        a.子类只能继承父类所有非私有的成员(成员方法和成员变量)
                        b.子类不能继承父类的构造方法,但是可以通过super(马上讲)关键字去访问父类构造方法。
                        c.不要为了部分功能而去继承
                (5)在创建对象时,子类中所有的构造方法默认都会访问父类中空参数的构造方法
                        a.因为子类会继承父类中的数据,可能还会使用父类的数据,所以,子类初始化之前,一定要先完成父类数据的初始化。                       
                        b.其实:每一个构造方法的第一条语句默认都是:super() Object类最顶层的父类。
                (6)父类没有无参构造方法,子类怎么办?
                        a.super解决:用super(....)显式调用父类的有参构造,如:super(name,age);->super("zs",30);
                        b.this解决:通过this调用本类的有参构造,然后在本类的有参构造里,又调用了父类的有参构造,相当于间接调用父类的有参构造.
                        c.super(…)或者this(….)必须出现在构造方法的第一条语句上,只能出现其一
                (7)继承中成员方法关系?
                        a.不同名的方法:直接调用就可以
                        b.同名的方法:称为方法的重写,用子类对象直接调用的是子类已经重写的方法   
            c.要想调用父类的方法,可以在子类重写的方法中添加super();
               
        3.谈谈你对this和super关键字的理解?
                (1)this:代表当前对象的引用,谁来调用我,我就代表谁
                (2)super:代表当前对象父类的引用
                (3)this和super的使用区别
                        a.调用成员变量
                                * this.成员变量 调用本类的成员变量,也可以调用父类的成员变量
                                * super.成员变量 调用父类的成员变量
                        b.调用构造方法
                                * this(...)        调用本类的构造方法
                                * super(...)        调用父类的构造方法
                        c.调用成员方法
                                * this.成员方法 调用本类的成员方法,也可以调用父类的方法
                                * super.成员方法 调用父类的成员方法
        4.什么是方法的重载和重写?
                (1)重载:在同一个类中,方法名相同、参数列表不同(数量不同、类型不同、顺序不同)、与返回值类型无关的多个方法构成重载
                (2)重写:在继承中,子父类出现了一模一样的方法(注意:返回值类型可以是子父类,这个我们学完面向对象讲) ,当子类需要父类的功能,
                        而功能主体子类有自己特有内容时,可以重写父类中的方法。这样,即沿袭了父类的功能,又定义了子类特有的内容
                (3)重写的注意事项:
                        a.父类中私有方法不能被重写,因为父类私有方法子类根本就无法继承,既然子类无法继承,就谈不上重写了
                        b.子类重写父类方法时,访问权限不能更低,最好就一致
                        c.父类静态方法,子类也必须通过静态方法进行重写
                                * 其实这个算不上方法重写,但是现象确实如此,至于为什么算不上方法重写,多态中我会讲解(静态只能覆盖静态)
                        d.子类重写父类方法的时候,最好声明一模一样。
        5.final关键字的特点?
                (1)修饰类,类不能被继承
                (2)修饰变量,变量就变成了常量,只能被赋值一次
                (3)修饰方法,方法不能被重写(有时所有方法都很重要,都不需要被重写,需要将类定义成final的)
                (4)final修饰局部变量:基本类型,是值不能被改变,引用类型,是地址值不能被改变,对象中的属性可以改变
                (5)final修饰变量的初始化时机?
                        a.未被static关键字修饰
                                * 可以显示初始化
                                * 可以在构造方法中初始化
                        b.被static修饰
                                * 可以显示初始化
                                * 可以在静态代码块中初始化
                                * 不能在构造方法中初始化
                               

7 个回复

倒序浏览
父类私有方法好像是能继承,只是无法访问而已
回复 使用道具 举报
很好  谢谢楼主
回复 使用道具 举报
今天刚学完继承,希望后续还能看到这样的总结
回复 使用道具 举报
点赞,,,,,,,,,
回复 使用道具 举报
楼主好人啊~
回复 使用道具 举报
总结的不错,但是这个东西还是多用。多写记得更牢固。
回复 使用道具 举报
LShu 中级黑马 2016-9-22 00:12:34
8#
学习了........
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马