Java面向对象的理解

在Java中,面向对象最简单的理解就是通过创建对象去调用对应的方法,比如:

Student s=new Student();
s.name="kobe";
System.out.println(s.name);
s.study();

但其实还有很多内容,Java有很多机制来维护面向对象特性,最基本的就是封装、多态和继承。下面来记录下它们的一些细节和注意事项。

继承

继承可以把多个类中相同成员提取到一个公共的类中,通过继承的实现方式来让子类和父类产生关系,继而让子类们具备父类的内容,最大的好处就是可以提高代码的复用性,降低修改代码的成本。
继承注意事项:

  1. 子类只能继承父类的非私有成员(成员变量和成员方法)。
  2. 子类不能继承父类的构造方法,但可以通过super去访问父类的构造方法,子类所有的构造方法默认都会访问父类的空参构造方法,如果父类没有空参构造方法,子类可通过super(参数1,参数2,…)去调用父类的带参构造方法,语句需要放在子类构造方法的第一句。
  3. 被final修饰的类不能被继承。

封装

通过隐藏程序实现的细节,只提供对外访问的方法,就是封装。
封装是需要通过权限修饰符来实现的。Java权限修饰符提供的访问权限:

 权限修饰符      本类   同一个包下(子类和无关类)    不同包下(子类)   不同包下(无关类)
 private         √    
 无              √             √
 protected       √             √                      √
 public          √             √                      √               √

通过private修饰类、方法、成员变量可隐藏对象实现的细节,只提供一个路径给对外访问,可降低偶合,提供代码安全性。

多态

同一个对象在不同时刻体现出来的不同状态就是多态。通过继承和接口实现,如下Person是Student和Teatcher的父类:

Person p=new Student();//此时p是学生
Person p=new Teatcher();//此时p是老师

多态的前提:

  1. 要有继承关系。
  2. 要有方法重写。
  3. 要有父类引用指向子类对象。

多态中成员访问特点:

  1. 成员变量,编译时期看父类,运行时期看父类。
  2. 成员方法,编译时期看父类,运行时期看子类,父类方法被子类方法重写。
  3. 静态属性,编译时期看父类,运行时期看父类,静态是和类相关的。
  4. 构造方法,创建子类对象的时候,会访问父类的构造方法,对父类数据进行初始化。
  5. 多态不能使用子类的特有功能。

多态的应用除了有继承非抽象类,还有抽象类的继承和接口的实现,Java的抽象类和接口都可以只声明方法体,而把具体实现留给实现类。

总结,Java就是通过这些特性实现的面向对象:

  1. 高内聚,低耦合,通过封装权限修饰,每个类、接口可以只负责一件事,对外提供一种功能。
  2. 当类写好后,拒绝再修改代码,需要扩展新需求时,可借助抽象和多态,把可能变化的内容抽象出来,通过继承或者接口实现来补充想要的功能。
  3. 编写代码可依赖于抽象,不依赖于具体实现,针对抽象或者接口编程,而不针对实现编程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值