javase-Study03-04(陈曙光)

来源:互联网 发布:js 上传图片控件流处理 编辑:程序博客网 时间:2024/04/29 19:00

封装、继承、多态(java语言的三大特点)

1、封装
  该隐藏隐藏,该公开的公开
  属性隐藏,同时提供get/set方法
  有些方法应该隐藏
  方法声明公开,实现隐藏。实现的改变对架构的影响最小
2、继承
  一般->特殊
  单继承:一个类最多只能有一个直接父类。类之间可以形成树状关系
 
  根据访问权限,子类如果可以访问父类的属性和方法,就能继承
  private 私有  不能继承
  default 本类+同包  同包子类可以继承,不同包子类不能继承
  protected 本类+同包+不同包子类  可以继承
  public 公开 可以继承

  方法的覆盖(Override):
  方法名相同,参数表相同,返回值相同,访问修饰符比父类相同或更宽,抛出的异常不能比父类更宽
 
  继承关系下对象的构造过程
  1)递归的构造父类对象
  2)分配本类空间
  3)初始化本类属性
  4)调用本类的构造方法

  super:
  super.  ->父类对象,访问父类被覆盖的方法或者父类被遮盖的属性
  super() ->用在构造方法时,用来指明调用父类的哪个构造方法,放在构造方法的第一行,默认调用父类无参构造方法
 
3、多态
  编译时多态:方法的重载
  运行时多态:
 
  子类对象当作父类对象来用!!!屏蔽同一父类下,不同子类差异
  //Animal为父类、Dog为子类
  Animal a = new Dog();
  允许引用类型和对象类型不同,但要求引用类型是对象类型的父类。
  对象类型代表了对象自身客观的实际类型,引用类型代表了主观上把对象当作什么类型来看待。
  引用类型:编译时类型,主观类型
  对象类型:运行时类型,客观类型

  1)对象运行时类型不变
  2)只能对对象调用其编译时类型定义的方法
  3)运行时根据对象类型去匹配对象类型中覆盖之后的方法  

强制类型转换:当我们把父类的引用赋值给子类引用的时候,需要强制类型转换。强制类型转换失败:类型转换异常.
  为了避免类型转换异常,使用instanceof判断
  引用 instanceof 类名   引用指向的对象的类型与后面的类名是否兼容
 
  多态的作用:通用编程、我们可以把不同子类的对象都当作父类对象看待,评比不同子类的差异。

原创粉丝点击