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

继承 inheritance

子类 父类

子类可以从父类继承属性和方法

子类可以提供自己单独的属性和方法

▪ 类是对对象的抽象,继承是对某一批类的抽象,从而实现对现实 世界更好的建模。

▪ 提高代码的复用性!

▪ extands的意思是“扩展”。子类是父类的扩展

▪ 不同的叫法:超类、父类、基类、子类、派生类

如何使用继承

▪ 使用继承

– 编写父类

class Pet {
//公共的属性和方法
}
class Dog extends Pet {
//子类特有的属性和方法
}

▪ 编写子类,继承父类

 

 何时使用继承?

– 继承不真实世界类似

▪ 只要说“猫是哺乳动物”,猫的很多属性、行为 就不言自明了

▪ 藏獒是一种狗

符合is-a关系的设计使用继承

– 继承是代码重用的一种方式

将子类共有的属性和行为放到父类中

  • 通过继承可以简化类的定义,实现代码的重用
  • 子类继承父类的成员变量和成员方法,但不继承父类的构造方法
  •  java中叧有单继承 ,没有像c++那样的多继承。多继承会引起混乱,使得 继承链过于复杂,系统难于维护。就像我们现实中,如果你有多个父母亲, 那是一个多么混乱的世界啊。多继承,就是为了实现代码的复用性,却引入 了复杂性,使得系统类之间的关系混乱。
  •  java中的多继承,可以通过接口来实现
  •  如果定义一个类时,没有调用extends,则它的父类是:java.lang.Object

封装/隐藏encapsulation

对外隐藏某些属性和方法

对外公开某些属性和方法

使用访问控制符,实现封装

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

1.–public 公共的。

▪可以被项目中所有的类访问。(项目可见性)

2.–protected 受保护的 。

▪可以被这个类本身访问;同一个包中的所有其他的类访问;被它的子类(同一个包以及不同包中的子类)访问

3.–default/friendly 默认的/友好的(包可见性) 。

▪被这个类本身访问;被同一个包中的类访问。

4.–private 私有的 。

▪只能被这个类本身访问。(类可见性)

类的访问权限只有两种:

1.–public 公共的

▪可被同一项目中所有的类访问。 (必须不文件名同名)

2.–default/friendly 默认的/友好的

▪可被同一个包中的类访问。

 封装要点:

•类的属性的处理:

1.一般使用private. (除非本属性确定会让子类继承)

2.提供相应的get/set方法来访问相关属性. 这些方法通常是public ,从而提供对属性的读取操作。 (注意:boolean变量的get方法是 用:is开头!)

•一些只用于本类的辅助性方法可以用private, 希望其他类调用的方法用public

多态 polymorphism

为了适应需求的多种变化,使代码变得更加通用!

生活中的多态:

同一种事物,由于条件不同,产生的结果也不同。父类引用,子类对象
程序中的多态:

多态:同一个引用类型,使用不同的实例而执行不同操作

如何实现多态:

使用多态实现思路

– 编写父类   

– 编写子类,子类重写父类方法

– 运行时  使用父亲的类型

向上转型   Pet pet = new Dog();    自动类型转换

实现多态的两个要素:

  • 子类重写父类方法   
  •  使用父类的类型, 

面向过程只有封装性(功能的封装,而没有数据的封装),没有继承和多态

▪面向过程只有封装性(功▪面向过程只有封装性(功能的封装,而没有数据的封装),没有继承和多态能的封装,而没有数据的封装),没有继承和多态
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值