Java 继承。

   Java 封装。   

Java 多态。

Java三个小老弟

Java三个小老弟

Java三个小老弟

继承

把很多类的相同特征和行为进行抽取,

用一个类来描述。

让多个类和这个类产生一个关系。

这样的话,多个类就可以省略很多代码。

这个关系就是继承。

java中用extends关键字表示。


 继承的体系结构
       多个具体的对象,

    不断的向上抽取共享的内容,

       最终形成了一个体系。

        这个体系叫做继承体系。


继承体系的学习和使用原则
1,学习顶层的内容。

因为他是整个体系的共性内容。
2, 创建子类使用。

也就是使用底层的具体对象。

 继承的特点:
        java中只能单继承,没有多继承。
        java可以有多重(层)继承。


    继承的好处:
        继承的出现提高了代码的复用性。
        继承的出现让类与类之间产生了关系,

提供了多态的前提。

子父类中的成员关系

Java三个小老弟

Java三个小老弟

Java三个小老弟

成员变量
   在子类方法中使用一个变量时,

首先,

在方法的局部变量中找这个变量,

有则使用。

否则,在本类中找成员变量,

有则使用。

否则,在父类中找成员变量,有则使用。

否则,报错。

成员方法
  用子类对象使用一个方法时。

首先,在子类中找这个方法,

有则使用。

否则,在父类中找这个方法,

有则使用。

否则,报错。

重写和重载的区别

重载:在同一类中。

方法名相同,参数列表不同。

重载可以改变返回类型。
     重写:在不同类中(子父类中)

方法声明相同

(返回类型,方法名,参数列表均相同)。
 重写需要注意:
           子类方法的访问权限要大于等于父类方法的访问权限。

 静态只能重写静态。

但是这种情况一般不会出现。

构造方法

子类的实例化过程

                子类创建对象时,会先去创建父类的对象。

默认是去调用父类的无参构造方法。

子类构造方法中,

第一行默认是super()
        为什么子类中第一行会默认有super()

因为他继承父类的成员使用,

使用前这些成员必须初始化,

而他们是父类的成员,

所以,必须通过父类进行初始化。

所以,会先创建一个父类的对象。

当父类没有无参构造方法时,

必须使用this

或者super调用其他的构造方法。


    this和super的区别
        this:代表本类对象的引用。
        super:代表父类的存储空间。

封装

Java三个小老弟

Java三个小老弟

Java三个小老弟

 指隐藏对象的属性和实现细节,

仅对外提供公共访问方式

将抽象得到的数据和行为(或功能)相结合,

形成一个有机的整体,

也就是将数据与操作数据的源代码

进行有机的结合,

形成“类”,

其中数据和函数都是类的成员。

在电子方面,

封装是指把硅片上的电路管脚,

用导线接引到外部接头处,

以便与其它器件连接。

比如电脑机箱、笔记本等


好处:
将变化隔离;方便使用;
 提高复用性;提高安全性

多态

Java三个小老弟

Java三个小老弟

Java三个小老弟

 同一个对象,

在程序不同时刻的多种运行状态。

举例:动物,狗是狗,狗是动物。

水(气态,液态,固态)


   多态前提
        存在着继承或者实现关系
        有方法的重写
        父类(接口)引用指向子类(实现)对象
   多态的好处和弊端:
        好处:

多态的存在提高了程序的扩展性和后期可维护性
        弊端:

虽然可以预先使用,

但是只能访问父类中已有的功能,

运行的是后期子类的功能内容。

不能预先使用子类中定义的特有功能。


    多态中对象调用成员的特点
        Fu f = new Zi();
        成员变量:编译看左边,运行看左边
       成员方法 :编译看左边,运行看右边
        静态方法:编译看左边,运行看左边

抽象类

Java三个小老弟

Java三个小老弟

Java三个小老弟

多个类有相同的方法声明,

但是方法体不一样。

这个时候,

我们考虑把方法声明进行抽取。

让子类继承后,

自己去实现方法体。

没有方法体的方法

我们需要用抽象标志下。

抽象的关键字是:abstract。


    抽象类:
该方法称为抽象方法,

包含抽象方法的类就是抽象类。


    抽象类的特点:
        抽象类和抽象方法都要用abstract进行修饰
        抽象类不能被实例化
        抽象类中不一定有抽象方法,

但是,

有抽象方法的类一定是抽象类。


抽象类中数据的特点
成员变量:

抽象类中可以有变量,

也可以有常量。
成员方法:

抽象类中可以有抽象方法,

也可以有非抽象方法。
构造方法:

抽象类是一个类,

所以,它有构造方法。

虽然本身不能实例化。

但是可以给子类实例化使用。


抽象类中的问题
        抽象类中是否有构造方法?

能不能被实例化?

如果不能,

为什么有构造方法?
抽象类有构造方法。
抽象类不能被实例化。
          抽象类中的构造方法供子类实例化调用。

抽象关键字abstract

不可以和哪些关键字共存?
private:

私有内容子类继承不到,

所以,不能重写。

但是abstract修饰的方法,

要求被重写。

两者冲突

final:

final修饰的方法不能被重写。

而abstract修饰的方法,

要求被重写。两者冲突。

static:

假如一个抽象方法能通过static修饰,

那么这个方法,

就可以直接通过类名调用。

而抽象方法是没有方法体的,

这样的调用无意义。

所以,不能用static修饰。


抽象类中可不可以没有抽象方法?

如果可以,这样的类有什么用吗?
抽象类可以没有抽象方法。
        抽象类中没有抽象方法的作用,

只是为了不让别的类建立该抽象类对象。

这个在awt中有体现。

Java三个小老弟

ITSTAR ∣一起学编程

    

Java三个小老弟

长按,识别二维码,加关注

我就知道你“在看”

Java三个小老弟

相关文章: