01 | Java面向对象

Java面向对象

面向对象的三大特性:

  • 继承
  • 封装
  • 多态

继承

目的:实现代码的复用

具体介绍:

  • 若两个子类具有相同的属性和方法时,可以将相同的一部分抽取出来放置公共的父类
  • 子类可以继承父类,继承后的子类将拥有父类的属性和方法(除了私有方法和构造方法)
  • 重写:子类可以复写父类的方法,命名与父亲类名相同的成员变量
  • 仅子类和本身访问的属性和方法可用(protect)修饰

类成员访问修饰符的功能范围

类型 private 无修饰(包限制) protect(包和子类限制) public
同一类
同一包中的子类
同一包中非子类
不同包中子类
不同包中的非子类

封装

定义:隐藏对象属性和实现细节,仅对外公开接口,控制读和修改的访问级别

目的:增强安全性,简化编程

基本实现:属性私有化,添加get,set方法,控制接口访问业务

多态

  • 同一个行为具有多种不同表现形式或形态的能力

  • 同一接口,使用不同的实例,执行不同的操作

多态的实现方式

  • 重写
  • 接口
  • 抽象类和抽象方法

Java的常见问题

重写与重载

重写Override

  • 子类对父类允许访问的方法重新编写,返回值和形参都不改变(外壳不变,核心重写
  • 重写不能抛出新的异常,或者更加宽泛的异常(儿子还是儿子,不能比老子强)
  • final、static不能重写,构造方法不能被重写

重载Overload

  • 一个类里,方法名称相同,参数不同,返回类型可以相同也可以不同
  • 构造器的重载

重写与重载的区别

接口与抽象类的比较

语法层面的区别

接口 抽象类
只能存在抽象方法 提供成员方法的实现细节
只能存在抽象的成员变量 成员变量可存在多种类型
不能含静态代码块和静态方法 可以有静态代码块和静态方法
一个类可以实现多个接口 一个类只能继承一个抽象类

设计层面的区别

接口 抽象类
行为抽象 事物抽象
针对事物的局部行为抽象 针对整体事物:属性,方法抽象
接口是一种行为规范,辐射式设计 抽象来可做很多子类的父类,模版式设计
一旦进行变更,实现类必须变更 一旦进行变更,实现类可不进行变更

猜你喜欢

转载自www.cnblogs.com/xm08030623/p/12418298.html