JAVA面向对象

Wesley13
• 阅读 431

一、java面向对象的特征?

答:java面向对象的特征:封装、继承、多态、抽象。

如果问java面向对象的三大特征是什么?那就是封装、继承、多态,

但说到面向对象,还有一个很主要的特征就是抽象。

1、封装

a) 铺垫:

Java把真实世界中某些具有共同特征的实体抽象成Java中的类,类的实例就是一个对象,而对象和真实世界的实体是一一对应的,所以说java是一门面向对象的语言。

b)概念:

每一个类中都会有属性和方法,封装指的就是把属性和方法隐藏起来,只保留一些对外的接口和外部进行交互。

c)封装的好处:

i.减少耦合;

ii.方便的修改自己的实现代码,不用修改那些调用我们代码的程序片段。

d)从程序的角度来分析封装带来的好处

i.假设有一个Husband类,如图:

JAVA面向对象

这个Husband类没有setter和getter方法,我们要想使用它,只能是这样

JAVA面向对象

如果,项目需求现在更改了,要将age改为String类型的,如图:

JAVA面向对象

如果我们的程序中有成百上千的地方都使用了husband.age,那么我们就奔溃了,

JAVA面向对象

对于这种情况,如果我们使用了封装,就很简单了,我们只需要把Husband类中的age的setter和getter方法重新生成,同时把setAge方法里面更改了就可以了,

JAVA面向对象

其他的地方依然使用原来的引用保持不变。

JAVA面向对象

2、继承

a)概念:

继承就是子类继承父类的特征和行为,使得子类对象具有父类的非private属性和方法。

JAVA面向对象

a)类的继承格式:

通过extends关键字申明一个类继承另一个类,如

class父类{}

class子类extends父类{}

b)为什么需要继承?

减少代码重复、臃肿,提高代码可维护性。

假设现在我们开发动物类,其中动物分别是企鹅和老鼠,要求如下:

企鹅:属性(姓名,id),方法(吃,睡,自我介绍)
老鼠;属性(姓名,id),方法(吃,睡,自我介绍)

JAVA面向对象

JAVA面向对象

从这两段代码中可以看出来,代码重复了,如果在有其他的动物,代码越来越多,后期维护会很麻烦,对于这种情况,我们就可以使用继承来解决问题。

首先将两个动物相同的属性和方法,提取出来,形成一个动物类(父类)

JAVA面向对象

然后让企鹅类和老鼠类都继承这个动物类,这样企鹅和老鼠就都具有了父类(动物类)的属性和方法了,子类中就不用写那么多重复的代码了。如:

JAVA面向对象 JAVA面向对象

a)继承的特性:

i.子类拥有父类非private的属性和方法;

ii.子类可以拥有完全属于自己的属性和方法(对父类扩展);

iii.Java是单继承(每个子类只能继承一个父类);但是Java可以是多重继承(如A继承B,B继承C)。

iv.增加了类之间的耦合(所以继承要慎用!!!)

b)扩充:

上面说Java只支持单继承,但是有些时候某一个类已经继承了其他的父类,就没有办法再继承目前需要的其他父类了,这个时候,就可以使用另一个方式叫:实现implements。

使用implements关键字可以变相的使Java具有多继承的特性(实现多个接口时,接口和接口之间采用逗号隔开),

JAVA面向对象

Super和this关键字:

Super关键字:我们可以通过super关键字来实现子类对父类成员的访问,引用当前实例对象的父类。

This关键字:指向实例对象自己的引用。

如:

JAVA面向对象

JAVA面向对象

3、多态

a)  概念:

多态就是同一个接口,使用不同的实现,而执行不同的操作。

如图:

JAVA面向对象

a)多态的三个必要条件:

i.继承(extends)

ii.重写(子类重写父类的同名方法)

iii.父类引用指向子类的对象,如:

Animal  a  = new Cat() ;

父类引用animal指向子类cat

b) 下面是一个多态实例的演示,

i.定义一个抽象类Animal

JAVA面向对象

然后定义子类Cat和Dog,继承Animal,实现父类的eat()方法,同时定义一个自己的方法work()。

JAVA面向对象

JAVA面向对象

在main方法中调用

JAVA面向对象

补充:

子类继承父类,重写父类的方法,

当子类对象调用重写的方法时,调用的是子类的方法,而不是父类的方法,

当想要调用父类中被重写的方法时,则需使用关键字super。

4、抽象

a)概念:

抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象,数据抽象指的是属性,行为抽象指的是方法。

b)抽象方法:使用abstract修饰的方法是抽象方法。

JAVA面向对象

b)抽象类:包含抽象方法的类是抽象类,抽象类使用abstract修饰。

(补充:不准确,抽象类中可以不包含抽象方法,但是如果一个抽象类中不包含抽象方法,定义为抽象类没有意义,所以我们就认为包含抽象方法的类就是抽象类)。

JAVA面向对象

i.抽象类不能创建对象;

ii.如果一个类继承了抽象类,子类必须实现父类的抽象方法。如果子类没有实现父类的抽象方法,则必须将子类也定义为abstract。

JAVA面向对象

iii.抽象类就是用来作为父类,让子类继承的。如果我们定义了一个抽象类,却不去继承它,就等于白白创建了一个抽象类,没有任何意义。

————————————————
原文链接:https://blog.csdn.net/u011159417/article/details/73500054

点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
半臻 半臻
2年前
Python基础6——面向对象
14面向对象14.1面向对象基础​面向对象是一种编程思想,处理面向对象编程以外,还有面向过程编程​三大特征:1.封装2.继承3.多态​面向过程与面向对象的区别1.面向过程:自己动手洗衣服,拧衣服、晾衣服2.面向对象:构造一个洗衣机对象,让洗衣机对象完成14.2类和对象​类:相同属性和功能的一类事物。​人是一个类,张三(
Wesley13 Wesley13
2年前
java面试(1)
1.面向对象的基本特征  封装、继承、多态、  封装:把客观事物封装成类  继承:继承一个类,就可以使用这个类的所有功能,并且在无需编写原来类的情况下对这些功能进行扩展  多态:子对象调用父对象,父对象会根据当前调用的子对象以不同的方式运作  实现多态:覆盖,重载2.final\\finally\\finalize的区别  fin
Wesley13 Wesley13
2年前
java面向对象的三大特性
java面向对象的三大特性1.封装,把事物封装成抽象的类,通过访问控制符把自己的成员变量和函数对不可信的进行信息隐藏以及提供方法给可信的类和对象来操作。2.继承,继承可以使用现有类的所有功能和成员变量,并且无需重新编写原来的类的情况下对这些功能进行扩展。3.多态,实现了对代码的复用,多态具体体现为重载和重
Wesley13 Wesley13
2年前
java的封装和this关键字知识整理
封装封装概述封装,是面向对象思想的特征之一。面向对象共有三个特征:封装,继承,多态。|封装表现:1.方法是最基本的封装体2.类也是一个封装体.封装的好处:1、提高了代码的复用性。 2、隐藏了实现细节,还要对外提供可以访问的方式。便于调用者的使用。这是核心之一,也可以理解为就是封装的概念。 3、提高了安全性。
Wesley13 Wesley13
2年前
java面试考点解析(4):面向对象思想、系统架构设计
\ 一、面向对象思想 \1、面向对象的特征有哪些方面?答:面向对象的特征主要有以下几个方面:\抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面。抽象只关注对象
Wesley13 Wesley13
2年前
Java(3)
面向对象编程思想:抽象 继承 多态 封装对象:万事万物皆对象. 类:把具有相同属性和方法的对象抽象出来形成的几何体!类是对象的抽象,对象是类的具体!如何描述一个类1.属性(属性不初始化时也有初始值,会自动初始化,整形为0 小数型为0.0  boolea
Wesley13 Wesley13
2年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Wesley13 Wesley13
2年前
Java面试题(一)
看到一篇不错的java面试题的文章,自己整理一下,作为备用吧!Java面试题面向对象的特征有哪些方面?封装最常见的是把属性私有化封装在一个类里面,只能通过方法去访问继承子类继承父类,从而继承了父类的方法和属性抽象
Wesley13 Wesley13
2年前
JAVA 基础知识
JAVA纯面向对象语言,有平台无关性,一次编译到处运行,编辑器会把java代码变成中间代码,然后在JVM上解释执行。拥有很多内置的类库,提供了对Web应用开发的支持,具有较好的安全和健壮性。JAVA和C的异同都是面向对象语言使用了面向对象的思想(封装,继承,多态),面向对象的特性(继承和组合)  面向对象有以下特点:  (1