java 类型转换重写_java笔记之封装、继承、重写、多态以及类型转换

前言

今天来谈谈Java中面向对象的主要的具体表现即封装,继承和多态。这是基础的重点。

正文

封装

隐藏实现细节

1)封装的步骤:

1))将属性私有化,使用private修饰符,修饰需要隐藏的方法和属性

2))提供共有的方法,访问私有属性(getter,setter)

注:

封装的目的是减少类与类的关联度

2)封装的规范:

1))修饰属性的可见度,来限制对属性的访问

2))为每个属性创建一对赋值和取值方法

3))在setter和getter方法中加入对属性的限制

3)封装的好处:

1))增加了数据的访问限制,增强了程序的安全性

2))为属性提供了一系列的规则,从而对属性起到保护的作用

3))从广义的角度上隐藏了实现细节

注:

1))方法签名的概念方法签名是方法名+参数列表

2))重载跟返回值无关

继承

事物之间存在相同的特性且存在包含关系,一个事物拥有另一个事物的特征,且具备自己的独立性。

1)语法:

extends,表名正在构建的类,派生于一个已经存在的类

注:

1))一般都是在父类中定义一般的属性和方法,让子类来继承它们。

2))一切的祖先是Object

2)继承的特性:

1))java是单继承的

2))子类继承父类中非private的属性和方法

3))子类被初始化之前,父类会先被初始化

(父类的构造器先于子类的构造器调用执行,先进行子类的构造器,却先执行父类的构造器,可使用debug来进行测试)

4))子类没显示的调用父类的构造器,则JVM会默认调用父类的无参构造器

(父类的默认构造器可调用;即父类没有其他的构造器,或者显示的提供父类的默认构造器)

5))用super方法显示调用父类的构造器,且他必须在子类构造器的第一行

注:

1))在创建子类时,如果子类的构造器中没有显式的调用父类构造器,在javac时,在子类的构造器的第一行自动加上super();

2))this,和super不能同时出现在构造器中,因为他们都要求在第一行

重写

子类中拥有父类相同的方法,但功能实现却不同。在调用时,优先使用子类的方法来完成功能。(前提是,父类的方法不能被私有化)

1)重写的要求:

1))存在继承关系

2))方法签名和放回值必须相同

3))访问的修饰符的可见性不能降低,声明的异常不能比父类方法的异常范围大。

4))访问控制修饰符的限制范围的总结

5ffa5919c4de10e4df8d00460883b1fa.bmp

多态

行为多态:重写和重写

引用多态:基类对象的引用指向子类的对象

1)行为多态:

重载:

1))在子类中,有多个相同的方法名,而参数列表不同

2))在子类和父类中,如果父类中的方法被子类继承,而子类中拥有和父类相同方法名,参数列表不同

重写:

子类方法的修饰符不能小于父类的修饰符范围,异常不能大于父类的范围

2)引用多态:

注:

基类引用.子类属性,将编译出错

因为,基类的引用对象是子类类型,这是java阶段的内存结构;而java代码执行需要javac,java两个阶段,所以他在javac阶段无法通过编译

例:

Human h=new Teacher();

1))在编译阶段,涉及到类型转换,从小的转换到大的

2))在执行阶段:使用基类引用指代堆区中的子类对象

注:java变量两种类型

1)) 一种是编译类型,一种是运行类型。

2))编译类型有变量的类型决定

3))运行时类型是实际对象类型决定。

4))如果这两种类型不一致,这种现象为动态绑定,又叫引用多态

类型转换

1.自动转换

(向上转换):小类型--->大类型

2.强制转换:

1)语法:

子类型 变量名=(子类型)

注:

1))转换的前提是,存在继承关系

2))instanceof 关键字 用于判断对象的类型

总结

理解好多态对后面的面向接口编程有很大的帮助。

自己思考一下多态跟编程的设计原则的低解耦的关系。

本文同步分享在 博客“iOS进阶”(CSDN)。

如有侵权,请联系 support@oschina.cn 删除。

本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值