Java_面向对象三大特征

面向对象特征

面向对象三大特征: 继承, 封装, 多态

继承

继承:

  • 子类可以从父类继承属性和方法
  • 对外公开某些属性和方法

要点(eclipse中Ctrl+T查看继承结构)

1.父类也称超类, 基类, 派生类
2.Java中只有单继承, 没有C++那种多继承
3.接口有多继承
4.子类继承父类, 可以得到父类的全部属性和方法(除了构造方法), 但不一定可以直接访问(例如父类中的私有属性和方法)
5.如果定义一个类时, 没有调用extends, 则它的父类是java.lang.object

Object类是所有Java类的根基类, 也就意味着所有的Java对象都有object类的属性和方法

关键字super

super是直接父类对象的引用, 可以通过super来访问父类中被子类覆盖的方法或属性

属性/方法查找顺序(如变量h)

1.查找当前类中有没有属性h
2.依次上溯每个类的父类, 查看每个父类中有没有j, 直到object
3.如果没有找到, 则出现编译错误
4.上述步骤中, 只要找到变量h, 则这个过程终止

构造方法调用顺序

构造方法第一句总是super(...)来调用父类对应的构造方法. 所以流程是先向上追溯到object, 然后再依次向下执行类的初始化和构造方法, 直到当前子类为止, 同静态初始化块一样, 先把静态初始化全部执行(父类直至object和子类)完后, 再执行构造方法

封装

封装作用

  • 对外隐藏某些属性和方法
  • 对外公开某些属性和方法
修饰符 同一个类 同一个包 不同包的子类 所有类
private *
defualt * *
proteced * * *
public * * * *

成员(成员变量或成员方法)访问权限共四种:

private
  只能被这个类本身访问
default
  可以被这个类本身访问
  可以被同一个包中的类访问
protected
  可以被这个类分数访问
  可以被同一个包中的所有其他类访问
  被它的子类(同一个包以及不同包的子类)访问
public
  可以被该项目的所有包中的所有类访问

类的访问权限共两种:

public
  可以被同一项目中所有的类访问(必须与文件名同名)
default
  可以被同一个包的类访问

封装要点:

类的属性的处理
  一般使用private访问权限
  提供相应的get/set方法来访问相关属性, 这些方法通常用public修饰, 以提供对属性的赋值与读取操作(boolean变量的get方法是以is开头)
一些只用于本类的辅助性方法可以用private修饰
希望其他类调用的方法用public修饰

多态

多态: 指同一个方法调用, 由于对象的不同, 可能会有不同的行为, 适应多种变化, 使得代码变得更加通用
属性没有多态

引用变量的两种类型:

  • 编译时类型(模糊一点, 一般是一个父类)
      由声明时类型决定
  • 运行时类型(运行时, 具体是哪个子类就是哪个子类)
      由实际对应的对象类型决定

多态要点:

1.多态是方法的多态, 不是属性的多态(多态与属性无关)
2.多态的存在要有3个必要条件: 继承, 方法重写, 父类引用指向子类对象
3.父类引用指向子类对象后, 用该父类引用调用子类重写的方法, 此时实现多态
4.多态不能调用声明类型中没有的方法

posted @ 2018-09-23 14:36  张飘扬  阅读(160)  评论(0编辑  收藏  举报