黑马程序员技术交流社区

标题: 关于面向对象你必须掌握的知识点 [打印本页]

作者: zhoujiegun    时间: 2016-4-27 23:36
标题: 关于面向对象你必须掌握的知识点
A:代码块概述
        * 在Java中,使用{}括起来的代码被称为代码块。
* B:代码块分类
        * 根据其位置和声明的不同,可以分为局部代码块,构造代码块,静态代码块,同步代码块(多线程讲解)。
* C:常见代码块的应用
        * a:局部代码块
                * 在方法中出现;限定变量生命周期,及早释放,提高内存利用率
        * b:构造代码块 (初始化块)
                * 在类中方法外出现;多个构造方法方法中相同的代码存放到一起,每次调用构造都执行,并且在构造方法前执行
        * c:静态代码块    static {}
                * 在类中方法外出现,并加上static修饰;用于给类进行初始化,在加载的时候就执行,并且只执行一次。
                * 一般用于加载驱动
代码执行顺序
        静态代码快--构造代码块--构造函数
------------------------------------------------------------------------------------------

继承的好处
        * a:提高了代码的复用性
        * b:提高了代码的维护性
        * c:让类与类之间产生了关系,是多态的前提
* B:继承的弊端
        * 类的耦合性增强了。
       
        * 开发的原则:高内聚,低耦合。
        * 耦合:类与类的关系
        * 内聚:就是自己完成某件事情的能力

###08.05_面向对象(Java中类的继承特点)(掌握)
* A:Java中类的继承特点
        * a:Java只支持单继承,不支持多继承。(一个儿子只能有一个爹)
                * 有些语言是支持多继承,格式:extends 类1,类2,...
        * b:Java支持多层继承(继承体系)

A:继承的注意事项
a:子类只能继承父类所有非私有的成员(成员方法和成员变量)
b:子类不能继承父类的构造方法,但是可以通过super(马上讲)关键字去访问父类构造方法。
c:不要为了部分功能而去继承
------------------------------------------------------------------------------------------

面向对象(this和super的区别和应用)(掌握)
A:this和super都代表什么
this:代表当前对象的引用,谁来调用我,我就代表谁
super:代表当前对象父类的引用
B:this和super的使用区别
a:调用成员变量
this.成员变量 调用本类的成员变量,也可以调用父类的成员变量
super.成员变量 调用父类的成员变量
b:调用构造方法
this(...)        调用本类的构造方法
super(...)        调用父类的构造方法
c:调用成员方法
this.成员方法 调用本类的成员方法,也可以调用父类的方法
super.成员方法 调用父类的成员方法

------------------------------------------------------------------------------------------
创建对象  对象 对象名(自取) = new 对象();
          调用对象的成员变量: 对象名.变量名(放入值);  调用对象方法:  对象名.方法名();
          例:  Phone p = new Phone()    p.price(5000);   p.call();

------------------------------------------------------------------------------------------------
多态:
多态前提
a:要有继承关系。
b:要有方法重写。
c:要有父类引用指向子类对象。

成员变量
编译看左边(父类),运行看左边(父类)。

成员方法
编译看左边(父类),运行看右边(子类)。

静态方法
编译看左边(父类),运行看左边(父类)。

父类引用指向子类对象
Fu f = new Zi();    f.(成员方法)     //子类有的方法而父类没有,则父类不能直接访问子类的方法,会报错

子类自己访问子类(本类)的成员方法方法
创建子类对象Zi z = new Zi();    z.(成员方法)

当一个子类有多个重复的方法时,普通的调用会造成代码增多   举例:
Cat c = new Cat();
c.eat();
c.sleep();

Cat c1 = new Cat();
c.eat();
c.sleep();
此时可用改进的方式:   
public static void useCat(Cat c){  //此处的Cat为子类名, c 为对象名. 调用改进版的方式 是在主方法中, useCat(c);useCat(2)
        c.eat();
        c.sleep();
}

-----------------------------------------------------------------------------------------
把父类引用赋值给子的引用(原因是父类不能访问子类的特有功能,要访问就得再new一个zi类对象,所以有以上向下转型)
向上转型: Fu f = new Zi();   向下转型:  Zi z = (Zi)f;
强转 Zi z = (Zi)f;

------------------------------------------------------------------------------------------

静态static
static 修饰的变量会被所有对象共享的
static 随着类的加载而加载
static 优先于对象存在
static 修饰的变量可以通过对象名调用,还可以通过静态所属的类 的类名调用(推荐用类名调用)
         静态方法中没有this关键字,它不能调用成员变量. (静态比对象先存在)
         静态方法只能访问静态的成员变量和成员方法
         静态方法只能访问静态,非静可以访问一切
------------------------------------------------------------------------------------------

final关键字(最终的)
final可以修饰类:该类不能被继承,否则会报错
final可以修饰方法:该 方法不能被重写(意思就是 覆盖,复写),否则会报错
final可以修饰变量:但该变量不能被重新赋值,否则会报错

final基本类型: 基本类型的值不能发生改变
final引用类型: 引用类型的地址值不能发生改变,但是该对象的堆内存的值是可以改变的

-----------------------------------------------------------------------------------------
代码块:
1.局部代码块   局部位置,用于限定变量的生命周期
2.构造代码块:  在类中的成员位置,用{}括起来的代码,每次调用构造方法执行前,都会先执行构造代码块
3.静态代码块:  在类中的成员位置,用{}括起来的代码,只不过用static修饰.作用是对类进行初始化,优先执行(只执行一次)
        它间的执行顺序是: 静态代码块 > 构造代码块 > 构造方法

----------------------------------------------------------------------------------------
接口
接口的特点:
1.接口用interface表示  格式:interface 接口名(自己取) {}
2.实现接口用implements表示      格式: class 类名(自已取)  implements 接口名{}
格式举例:
Interface Inter{ }   //定义一个接口,名为Inter
Class shixian implements Inter{ }   //这是一个实现类,相当于继承接口.
3.接口的成员特点:
1.成员变量:接口中的成员变量只能是常量,并且是静态的 (默认加上public static final 来修饰变量)
2.构造方法: 接口没有构造方法
3.成员方法: 只能是抽象的方法
a)默认修饰符:public abstract(建议自己加)

2.接口不能实例化(就是不能new对象)
3.接口的子类 可以是抽象类,但意义不大; 可以是具体类,要重写接口中的所有抽象方法(推荐)
接口与抽象类的设计理念区别:
抽象类:        被继承体现的是: “is a”的关系.抽象类中定义的是该继                                承体系的共性功能
接口:                被实现体现的是:”like a”的关系.接口中定义的是该继承                                体系的扩展功能
作者: huhemingtiancai    时间: 2016-4-27 23:51
整理得不错,关键是得自己知道
作者: 执着为梦    时间: 2016-4-28 00:03
可以啊!!!!!!!!!!!!
作者: lxd323    时间: 2016-4-28 11:37
总结的不错,学习了




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