首页 > 编程知识 正文

java面向对象程序设计赵生慧,java面向对象的经典例子

时间:2023-05-04 02:02:47 阅读:111127 作者:577

众所周知,Java是一种面向对象的语言。 程序使用类的概念来抽象地描述同一个类的东西,而对象是同一个类的东西的具体展示。 例如,创建华为移动电话对象(hwPhone ),其定义具有诸如颜色、大小、价格等属性特征以及诸如充电、定时、导航等行为特征的移动电话类别(PhoneClass )。 这是P30、极光蓝、售价5400RMB等具体属性和支持北斗导航模式、不支持无线充电等具体行为特征。 简单来说,类为对象提供了模板,而对象是类的实例。

Java面向对象的四个特征是抽象、封装、继承、多态,作为基础中的重要组成部分,我们将尽可能以简洁明了的方式进行总结。

抽象如前所述,类本身是一个抽象概念,如果抽象是正式定义的,可以用把一组对象共同的特征提取出来组成类的过程,特征包括属性特征和行为特征。或作为示例进行说明。

例如,有一组不同品牌的汽车对象,属性和行为特性描述如下。

audiCar:属性特点有—— audi A6L、四轮驱动、65L油箱、360全景影像、6年10w公里维护、油耗小等; 行动的特征有——的高速化(百公里的加速只需要8s )、没有自适应巡航等。bmwCar:属性特点为—— BMW X3,碳黑车身,75L油箱,售价389800RMB,6年保养20w公里,油耗偏高等; 行动的特征包括——提速(百公里加速只需要6s )、自适应巡航、车道自动跟踪车等。greelyCar:属性特点有——博越2020pro、后轮驱动、60L油箱、6年15w公里维护、油耗偏高等; 行动的特征有——速(百公里加速只需要6s )、自适应巡航等。 提取这些对象的共同特征:属性特征——品牌名称、油箱容量、维护期、油耗; 行动特性——高速、巡航方式。

Car:name、oilCapacity、maintenance、fuelLiters、getSpeed ()和getCruiseType ) )。 这是日常开发中构成类的大致过程,属性特征对应于Car类的变量,行为特征对应于Car类的方法,可见抽象不介意这些特征的细节。

在封装项目的过程中注意过吗? 项目始终包含utils目录,其中包含许多定制工具类(如JsonUtils、StringUtils和ExpectionUtil ),以及在代码中执行数组操作时由JDK提供的Arrays类例如,BeanUtils工具类、CollectionUtils工具类等,这些类实际上是软件包概念的体现:隐藏了对象特征实现的细节,只向外界提供一系列的接口API来操作该对象。

以定制的StringUtils类为例,在开发过程中需要注意软件包的细节问题。

如果使用访问修饰符(public、protected、private,可选)限定StringUtils类的变量/方法,则对于private限定,外部对象将包括该类的对象和对象的变量和方法如果不在静态中限定tringUtils类的变量/方法,则外部对象要访问对象,必须在new中创建对象,然后通过该对象访问与操作相关的变量和方法。 静态限定使您可以通过类名.属性、类名和方法名直接访问和操作对象的变量和方法。 修饰符应注意的其他问题:如fianl、abstract、synchronized、volatile等。 继承Java具有表示类继承关系的关键字。 extends,继承的类称为父类、基类或超类,继承父类的类称为子类、子类或派生类。 需要注意类之间的继承模式是单继承的,接口之间的继承模式可以多继承继承的作用在于被继承者可以复用继承者的非私有功能,被继承者还可以实现比继承者更多的功能。

开发中继承应注意的几个细节问题:

如果非抽象子类继承抽象的父类,则必须重写抽象父类的所有抽象方法。 抽象子类继承了抽象的父类,并且不需要重写抽象父类的抽象方法。如果子类使用父对象的成员变量或方法,则可以在super.xxx中调用它,并调用父类的构造函数如果一个接口继承多个接口,则该接口不一定需要重写多个接口的抽象方法。多态镇静的毛巾有各种各样的形态。 正式说明:

同一个动作作用在相同或不同的对象上有不同的含义。如重载、重写都属于多态性的体现,重载是一种编译时的多态,具有静态特征;重写则是一种运行时的多态,是父类和子类之间多态性的体现,具有动态特征。

重载Overloading注意的问题:

重载必须要保证同一个类中的构造方法或成员方法名称是一致的,而参数列表不同(包括参数个数,类型等);重载可以让方法的限定修饰符、声明的异常、返回值类型等不同;重载不能通过返回值的不同来区分方法重载,因为诸如A.m1(),不能明确引用A调用的m1()方法是何种返回值类型;

重写Overriding注意的问题:

重写的前提要保证父类可被继承(父类非final的),重写的方法非private、非final、非static;子类重写父类的方法,要保证重写的方法参数列表(包括参数个数,类型等)等不能被修改,不能抛新的异常或范围更广的异常,返回值类型不能被修改 或修改成非派生类类型;父类的构造方法不能被重写,因为父类构造器的功能是初始化父类对象的成员变量,并通过new的方式创建该父类的实例,子类则需要在自己的构造器内完成自身成员变量的初始化。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。