zoukankan      html  css  js  c++  java
  • JAVA面向对象

    一、java面向对象的特征?

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

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

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

    1、封装

    a) 铺垫:

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

    b)概念:

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

    c)封装的好处:

      i.减少耦合;

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

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

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

      

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

       

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

      

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

      

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

      

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

      

     

    2、继承

    a)概念:

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


    a)类的继承格式:

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

    class父类{}

    class子类extends父类{}

     

    b)为什么需要继承?

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


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

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

     

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

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

     

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

     

    a)继承的特性:

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

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

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

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

    b)扩充:

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

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

     

    Super和this关键字:

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

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

    如:

     

     

    3、多态

    a)  概念:

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

    如图:

     

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

      i.继承(extends)

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

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

    Animal  a  = new Cat() ;

    父类引用animal指向子类cat

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

       i.定义一个抽象类Animal

     

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

     

     

    在main方法中调用

     

    补充:

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

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

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

    4、抽象

    a)概念:

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

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

     

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

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

     

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

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

     

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

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

  • 相关阅读:
    博客园 Open Live Writer 博客编辑工具&代码高亮显示插件 安装使用说明
    测试高亮代码
    Linux 查看操作系统版本信息 uname
    Linux 查看登录用户信息 who & whoami
    Linux crontab 每5秒钟执行一次 shell 脚本 的方法
    Linux 查找特定程序 whereis
    Java 语言实现 MD5 加密
    Maven 官网 查找&下载 jar包& pom引用 完美方案
    ArcGIS Engine 10.x许可代码
    IIS 无法显示网页 目前访问网站的用户过多
  • 原文地址:https://www.cnblogs.com/qiujianfeng/p/11471516.html
Copyright © 2011-2022 走看看