JavaOOP封装和继承

面向对象的三大特性

面向对象有三大特性分别是:

  • 封装
  • 继承
  • 多态

本次主要围绕三大特性中的封装和继承来展开,并介绍其重要概念,例如方法重载、抽象类、方法重写等。

封装

一、为什么要封装?

  1. 良好的封装能够减少耦合
  2. 类内部可以自由修改
  3. 可以对成员变量进行更精确的控制
  4. 隐藏信息,实现细节

二、 set/get访问器
set/get访问器可以保证属性是安全的,而且可以和外界正常交流

三、构造方法:创建对象的时候后台会自动调用的方法

  1. 特点:没有返回值+方法名和类名一致
  2. 作用:创建对象并且进行初始化赋值
  3. 隐式无参构造:当类中没有定义构造方法时系统会自动默认分配无参构造,但是当定义某个构造函数后,系统会将分配的无参构造收回

四、方法重载:

  1. 在同一个类中
  2. 方法名相同
  3. 参数不同(参数的个数不同,参数的类型不同)
  4. 对返回值和修饰符没有要求
    总结:即同名同类不同参(不同参:类型 顺序 数量)

为什么使用方法重载?
同一个方法名,传递不同的参数,解决不同的问题,简化代码量

五、static的用法

  1. 影响:可以使用类名和对象名调用静态属性和方法
  2. 含义:静态代表全局共享
  3. 用法
    a.静态属性: public static String name;
    b.静态方法: public static void test(){}
    c.静态代码块: static(代码) 类被加载的时候自动执行一次

继承

继承是面向对象三大特性之一,其作用是减少代码重复率,提高代码复用性

一、继承的步骤?

  1. 根据子类是一个父类的逻辑定义父类的的名字
  2. 将子类公共的属性和方法定义在父类中
  3. 用继承关键字extends表示父子关系
  4. 在子类中定义自己特有的属性和方法
		public Car extends  Vehicle  //访问修饰符 子类 继承关键字 父类{
}

1.使用extends关键字实现继承,上面代码中Car为子类,Vehicle为父类
2.继承时代码的执行顺序:先父后子,先属性后构造

二、子类不可以继承父类的三个资源

  1. 私有化的属性和方法,使用private修饰
  2. 构造方法(可以调用,但不属于子类)
  3. 当父类与子类不在同一个包下时,默认权限的属性和方法无法继承

三、四大权限

  1. private: 本类
  2. 默认(default): 本类、同包
  3. protected: 本类、同包、子类
  4. public: 任何地方

四、this和super的区别

  1. this:指代当前类的对象

  2. super:指代当前类父类的对象

  3. 用法:
    调构造: super(); super(参数);
    调属性: super.属性名;
    调方法: super.方法名();

  4. 注意
    super调用构造方法时必须位于代码第一行,否则报错
    super调用属性和方法时注意权限问题

五、方法重写
方法重写一般发生在子类中,即子类改造父类当中已经存在的某个方法
注意事项:

  1. 同名
  2. 同参
  3. 不同类
  4. 方法的权限不能缩小
  5. 返回值要么相同,要么是父子类关系

六、抽象类和抽象方法的特点:

  1. 抽象类不能实例化
  2. 抽象方法只有方法声明,没有方法实现,有抽象方法的类必须声明为抽象类。
  3. 用abstract修饰
  4. 抽象方法没有方法体{}
  5. 抽象方法必须定义在抽象类或者接口中
  6. 父类中的抽象方法要求所有子类强制重写改造,除非子类也是抽象类

七、final
用final修饰的类、不能再被继承。父类中用final修饰的方法,不能被子类重写。用final修饰的变量,只能在初始化时进行赋值,不能在其他地方修改,final和abstract互相矛盾,不能同时出现。

猜你喜欢

转载自blog.csdn.net/weixin_46689649/article/details/107211075