自学笔记:面向对象OOP


面向对象

OO技术只要有三个领域:OOA(面向对象分析),OOD(面向对象设计),OOP(面向对象编程)

面向对象就是将一组数据以及操作数据的方式封装在一个对象中,将数据封装为对象的属性,将操作数据的方式封装为对象的方法。程序员只需要调用对象就可以使用这些属性与方法,不需要知道哪些方法是如何实现的。

OOP的三个基本特性

封装

就是将对象的属性和方法尽可能的隐藏在类里面,只给用户留下使用的途径即可。而关于属性以及方法的实现,用户不需要知道。

举例:就好比是造一辆汽车一样,用车壳子给它封装起来,用户只需要对使用汽车即可,不需要知道汽车内部发动机什么的是如何工作的。

而根据封装,又有4种权限,类的属性和方法可以给谁看。
public:任何类都可以访问。
protected:同一个包,或者其子类可以访问。
默认不填:只有同一个包内的类可以访问。
private:只有同一个类的可以访问。

访问修饰符同类同包子类任何类
private1
缺省11
protected111
public1111

继承

将类按照现实世界类比为父子的话,子类就是继承于父类,通过extends关键字实现,一个子类只能继承一个父类。
子类可以继承父类public或protected修饰的属性或方法,也可以自己重写public或protected修饰的父类的方法。

子类除去继承自父类的属性和方法,也可以自己拓展方法。例如父类没有writeCode()的方法,而自己可以自己拓展。

举例:就好比父亲有一个工作技能=work()方法,这个工作技能是教书。
然后父亲生了一个儿子,儿子就会获得这个工作技能,教书。
重写: 但是如果儿子不想教书,就可以重写work()方法,修改自己的技能,比如work()=编程。
当然,技多不压身,儿子也可以既继承了父亲的work(),自己又新学一个技能work02()=编程。这样儿子就既有work()=教书,又有work02()=编程。

注意:子类重写父类方法的权限只能比父类小。

多态

字面意思就是多种状态。现实世界一个事物往往具有不同的形态。例如动物,是动物就要吃东西才能活eat(),但是不同动物的eat方法具体又不一样,例如猫和狗都是动物,实现动物接口,但是猫吃鱼,狗吃骨头。

多态又分静态多态和动态多态。

  • 静态多态:又称编译时多态,系统在升序编译时就知道调用那个方法。例如重载,系统在编译器时期,就根据传入参数的值需要调用哪个方法了。
  • 动态多态:又称运行时多态。
    动态多态的实现需要三个条件:继承,重写和父类引用指向子类对象。
    多态调用的优先级this.eat(参数),super.eat(参数),this.eat(super.参数),super.eat(super.参数)。
    即(子类有的用子类,子类没有的再调用父类)

优点

易维护,可重用,可拓展。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值