继承、多态和代码块

来源:互联网 发布:苹果查询网络 编辑:程序博客网 时间:2024/06/16 01:56

继承和代码块

代码块

  • 用{ }括起来的代码
  • 分类:
    A:局部代码块
    用于限定变量的生命周期,及早释放,提高内存利用率
    B:构造代码块
    用多个构造方法中相同的代码可以放到这里,每个构造方法前,首先执行构造代码块
    C:静态代码块
    对类的数据进行初始化,仅仅只执行一次

继承

把多个类中相同的成员给提取出来定义到一个独立的类中,然后让这多个类和该独立的类产生一个关系,这多个类就具备了这些内容,就个关系叫继承

JAVA中如何表示继承?格式是什么?

A:用关键字extends表示
B:格式:

class 子类名 extends 父类名{}

继承的好处

A:提高了代码的复用性
B:提高了代码的维护性
C:让类与类产生了一个关系,是多态的前提

继承的弊端

A:让类的耦合性增强,这样某个类的改变,就会影响其他的该类相关的类

    原则:低耦合,高内聚    耦合:类与类的关系    内聚:自己完成某件事情的能力

B:打破了封装性

JAVA中继承的特点

A:JAVA中类只支持单继承
B:JAVA中可以多层(重)继承(继承体系)

继承的注意事项

A:子类不能继承父类的私有成员
B:子类不能继承父类的构造方法,但是可以通过super去访问
C:不要为了部分功能而去继承

什么时候使用继承

A:继承体现的是:is a的关系
B:采用假设法

JAVA继承中的成员关系

A:成员变量

a:子类的成员变量名称和父类中的成员变量名称不一样,这个太简单
b:子类的成员变量名称和父类中的成员变量名称一样,这个怎么访问呢?

子类的方法访问变量的查找顺序:在子类的局部范围找,有就使用在子类的成员范围找,有就使用在父类的成员范围找,有就使用找不到,就报错

B:构造方法

a:子类的构造方法默认会去访问父类的无参构造方法

是为了子类访问父类数据的初始化

b:父类中如果没有无参构造方法,怎么办?

子类通过super去明确调用带参构造子类通过this调用本身的其他构造,但是一定会有一个去访问了父类的构造让父类提供无参构造

C:成员方法

a:子类的成员方法的父类的成员方法名称不一样,这个简单
b:子类的成员方法的父类中的成员方法名称一样,这个怎么访问呢?

通过子类对象访问一个方法的查找顺序:在子类中找,有就使用在父类中找,有就使用找不到,就报错

多态

概念

同一个对象在不同时刻体现出来的不同状态

多态的前提

  • 有继承或者实现关系
  • 有方法重写
  • 有父类或者父接口引用指向子类对象

多态的分类

a.具体类多态    class Fu{};    class Zi extends Fu{};    Fu f = new Zi();b.抽象类多态    abstract class Fu{};    class Zi extends Fu{};    FU f = new Zi();c.接口多态    interface Fu{};    class Zi implements Fu{};    Fu f = new Zi();

多态中的成员访问特点

  • 成员变量
    编译看左边,运行看左边
  • 构造方法
    子类的构造都会默认访问父类构造
  • 成员方法
    编译看左边,运行看右边
  • 静态方法
    编译看左边,运行看左边

为什么?
因为成员方法有重写

多态的好处

A:提高代码的维护性(继承体现)B:提高代码的扩展性(多态体现)

多态的弊端

父不能使用子的特有功能现象:    子可以当作父使用,父不能当作子使用

多态中的转型

A:向上转型    从子到父B:向下转型    从父到子

    • 继承和代码块
      • 代码块
      • 继承
        • 把多个类中相同的成员给提取出来定义到一个独立的类中然后让这多个类和该独立的类产生一个关系这多个类就具备了这些内容就个关系叫继承
        • JAVA中如何表示继承格式是什么
        • 继承的好处
        • 继承的弊端
        • JAVA中继承的特点
        • 继承的注意事项
        • 什么时候使用继承
      • JAVA继承中的成员关系
        • A成员变量
        • B构造方法
        • C成员方法
    • 多态
      • 概念
      • 多态的前提
      • 多态的分类
      • 多态中的成员访问特点
      • 多态的好处
      • 多态的弊端
      • 多态中的转型

0 0