面向对象的特征(封装、继承、多态)

面对对象编程的三大特征:封装、继承、多态
封装:
(1)封装的概念
①大家想一想生活中封装是什么?包装 :快递 :打包
1)例如: 浩浩去网上买了个充气娃娃{ 需要打包 }安全,隐式 ,保密 扎两针
2)例如: 买了一条狗狗活的:{打包} 准备吃狗肉…打包就需要透气,外界交流
3)必须是你打开:只要有一定权限的人就可以打开
4)台式机电脑:机箱[ 主板 显卡 内存 电源 硬盘。。。]

②如上示例的共同点总结:
通过封装的操作,可以达到从物理层面控制访问(外面不能轻易访问到里面内容–》这个就是物理层面)
(2)权限的介绍
①现在在当前类中,如果Student类中的成员,不进行封装,随便修改,访问!
②给成员提供private权限之后,外部根本没法用!
(3)封装的步骤及分析
标准的封装步骤:封装已经学会了?
①私有化字段,提供private的权限
②标准的提供getset方法!而且本质就是普通方法而已…
③提供一个无参数的构造方法
(4)封装的注意事项
注意:如果字段类型是boolean sex;
方法名字规范:
etSex
getSex—变成---->isSex
继承:
1.继承的概念:
(1)把公共的属性提取出来形成一个公共的类,让其他的类去继承
①这样的公共的类我们叫做父类,去继承的类我们叫做子类
②原则:父类存放共性,子类存放特性
(2)泛华:在多个子类的基础上面抽取共有属性的行为到一个父类中去
(3)特化:在一个父类的基础上拓展子类特有的属性和行为,生成一个新的子类
2.继承的语法及可继承的东西
(1) 语法:
class A{}
class B extends A{}
B这个类继承到了A类
(2)可继承的东西:
①类
②字段
③普通方法
④构造方法
⑤非私有的字段及普通方法
⑥继承到一个类的特性

3.继承的特点
1.Java中类的继承只能够是单继承:【一个儿子只有一个亲爹】
2.可以支持多重继承【间接父类:类是可以有老祖宗的】
3.每一个类都有一个直接父类:【一个人一定是有亲爹的】
4.如果没有看到显示的继承代码,那么就隐式继承就Object 【你自己没有一个爹,安排一个爹】
多态:
1.多态的概念
①简单理解:一种事物的多种形态
②一个人就是一个动物:
(1)Animal aml = new Person();//一个动物变量中,可能存放子类对象的多种可能
③理解:使用aml:编译是看的是Animal类型,运行时看的是实际存放的对象[真实类型]
④官方概念:编译时跟运行时类型不一致就产生了多态
⑤民间理解:父类类型的变量,存放子类类型的对象,可能存放子类类型的对象有多种可能
⑥多态存在的前提:必须有继承关系
2.多态的编译时运行时过程
(1)编译时,看的是父类类型,会现在父类中,看有不有对应的方法,如果没有继续向上找{更高父类}如果找到了,编译通过,如果找不到,编译失败报错
(2)运行时:看真实类型,如果在真实类型中找到了,就运行真实类型中的函数,如果没有找到,向上找
(3)问题:编译通过了,但是运行可不可能找不到?不可能的,因为编译都已经说明了,上面一定有
3.多态的应用示例
多态的应用实例:
①发现多态的好处,多态屏蔽了不同子类的实现差异
②子类的实现?子类可以覆写父类的方法的
人喂狗:有人有狗:狗有很多种:每个狗都有吃的行为
(1)父类中有一个方法,子类覆写了
(2)父类中有一个方法,子类没有
(3)父类中没有,子类有一个方法
(4)父类子类都没有
----------- 上面都是实例方法,下面来一个静态方法---------------------------------
(1)静态方法
(2)字段没有覆写一说
(3)分析:
(4)实际开发中一般不会再子类中定义一个和父类同名的字段,
(5)如果是有这样的情况存在,
①如果编译时类型父类的类型,取值是父类里面字段的值;
②如果编译时类型子类的类型,取值是子类里面字段的值;

你可能感兴趣的:(面向对象的特征(封装、继承、多态))