JAVA的基础知识(一)

半城伤御伤魂 提交于 2019-12-28 02:47:58

1、对象的概念

Java 是面向对象的编程语言,对象就是面向对象程序设计的核心。所谓对象就是真实世界中的实体,对象与实体是一一对应的,也就是说现实世界中每一个实体都是一个对象,它是一种具体的概念

2、对象的特点

对象具有属性和行为。
       对象具有变化的状态。
       对象具有唯一性
       对象都是某个类别的实例
       一切皆为对象,真实世界中的所有事物都可以视为对象。

3、面向对象和面向过程的区别

面向过程:一种较早的编程思想,顾名思义就是该思想是站着过程的角度思考问题,强调的就是功能行为,功能的执行过程,即先后顺序,而每一个功能我们都使用函数(类似于方法)把这些步骤一步一步实现。使用的时候依次调用函数就可以了。

面向过程的设计:最小的程序单元是函数,每个函数负责完成某一个功能,用于接受输入数据,函数对输入数据进行处理,然后输出结果数据,整个软件系统由一个个的函数组成,其中作为程序入口的函数称之为主函数,主函数依次调用其他函数,普通函数之间可以相互调用,从而实现整个系统功能。 面向过程最大的问题在于随着系统的膨胀,面向过程将无法应付,最终导致系统的崩溃。为了解决这一种软件危机,我们提出面向对象思想。

面向过程的缺陷:是采用指定而下的设计模式,在设计阶段就需要考虑每一个模块应该分解成哪些子模块,每一个子模块又细分为更小的子模块,如此类推,直到将模块细化为一个个函数。

存在的问题:设计不够直观,与人类的思维习惯不一致 系统软件适应新差可拓展性差维护性低

面向对象:一种基于面向过程的新编程思想,顾名思义就是该思想是站在对象的角度思考问题,我们把多个功能合理放到不同对象里,强调的是具备某些功能的对象。具备某种功能的实体,称为对象。面向对象最小的程序单元是:类。面向对象更加符合常规的思维方式,稳定性好可重用性强,易于开发大型软件产品,有良好的可维护性。在软件工程上,面向对象可以使工程更加模块化,实现更低的耦合和更高的内聚

4、面向对象的三大核心特性简介

面向对象具有继承封装多态 3 个核心特性

4.1、继承

     继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。

    子类会具有父类的一般特性也会具有自身的特性。

4.2、Java 多态

     多态是同一个行为具有多个不同表现形式或形态的能力。多态就是同一个接口,使用不同的实例而执行不同操作。同一个事件发生在不同的对象上会产生不同的结果

4.3、Java 封装

    在面向对象程式设计方法中,封装(英语:Encapsulation)是指一种将抽象性函式接口的实现细节部份包装、隐藏起来的方法

    封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问

   封装最主要的功能在于我们能修改自己的实现代码,而不用修改那些调用我们代码的程序片段

   适当的封装可以让程式码更容易理解与维护,也加强了程式码的安全性

5、面向对象编程三大特性详解

5.1、继承

    5.1.1、继承的概念

      程序中的继承性是指子类拥有父类数据结构的方法和机制,这是类之间的一种关系;继承只能是单继承,一个类只有一个父类

      继承是类与类的一种关系,是一种“is a”的关系。比如“狗”继承“动物”,这里动物类是狗类的父类或者基类,狗类是动物类的子类或者派生类

    补充:Java中的继承只能单继承,但是可以通过内部类继承其他类来实现多继承。

public class Son extends Father{
       public void go () {
          System.out.println("son go");
       }
       public void eat () {
          System.out.println("son eat");
       }
       public void sleep() {
          System.out.println("zzzzzz");
       }
       public void cook() {
                //匿名内部类实现的多继承
                new Mother().cook();
                //内部类继承第二个父类来实现多继承
                Mom mom = new Mom();
                mom.cook();
       }
       private class Mom extends Mother {
           @Override
           public void cook() {
            System.out.println("mom cook");
       }
    }
}

     5.1.2、继承的好处

              子类拥有父类的所有属性和方法除了private修饰的属性不能拥有)从而实现了实现代码的复用;

            5.1.3、语法规则

                 通关关键字extends实现继承

   5.1.4、方法的重写

        子类如果对继承的父类的方法不满意(不适合),可以自己编写继承的方法,这种方式就称为方法的重写。当调用方法时会优先调用子类的方法。

        重写要注意:

             a)  返回值类型

             b) 方法名

             c) 参数类型及个数

      都要与父类继承的方法相同,才叫方法的重写

         5.1.5、重载和重写的区别:

               方法重载:在同一个类中处理不同数据的多个相同方法名的多态手段。

               方法重写:相对继承而言,子类中对父类已经存在的方法进行区别化的修改。

 5.1.6、继承的初始化顺序

          父类对象属性初始化---->父类对象构造方法---->子类对象属性初始化--->子类对象构造方法

5.1.7、final关键字          

                使用final关键字做标识有“最终的”含义。

           1. final 修饰类,则该类不允许被继承

           2. final 修饰方法,则该方法不允许被覆盖(重写)

           3. final 修饰属性,则该类的该属性不会进行隐式的初始化,所以 该final 属性的初始化属性必须有值,或在构造方法中赋值(但只能选其一,且必须选其一,因为没有默认值!),且初始化之后就不能改了,只能赋值一次

           4. final 修饰变量,则该变量的值只能赋一次值,在声明变量的时候才能赋值,即变为常量

      5.1.8、super关键字

                在对象的内部使用,可以代表父类对象。        

                           1、访问父类的属性:super.age

                      2、访问父类的方法:super.eat()

               子类的构造的过程当中必须调用父类的构造方法。其实这个过程已经隐式地使用了我们的super关键字。这是因为如果子类的构造方法中没有显示调用父类的构造方法,则系统默认调用父类无参的构造方法。自己用super关键字在子类里调用父类的构造方法,则必须在子类的构造方法中的第一行。

        补充说明,虽然没有显示声明父类的无参的构造方法,系统会自动默认生成一个无参构造方法,但是,如果你声明了一个有参的构造方法,而没有声明无参的构造方法,这时系统不会动默认生成一个无参构造方法,此时称为父类有没有无参的构造方法

5.2、封装

      5.2.1、封装的概念

           封装是将代码及其处理的数据绑定在一起的一种编程机制,该机制保证了程序和数据都不受外部干扰且不被误用。封装的目的在于保护信息,使用它的主要优点如下

                  a) 保护类中的信息,它可以阻止在外部定义的代码随意访问内部代码和数据

                  b) 隐藏细节信息,一些不需要程序员修改和使用的信息

                  c) 有助于建立各个系统之间的松耦合关系,提高系统的独立性  

                  b) 提高软件的复用率,降低成本

                  Java 语言的基本封装单位是类。由于类的用途是封装复杂性,所以类的内部有隐藏实现复杂性的机制。Java 提供了私有和公有的访问模式,类的公有接口代表外部的用户应该知道或可以知道的每件东西,私有的方法数据只能通过该类的成员代码来访问,这就可以确保不会发生不希望的事情。

5.2.2、封装的优点

       a) 良好的封装能够减少耦合。
              b) 类内部的结构可以自由修改。
              c) 可以对成员变量进行更精确的控制。
              d) 隐藏信息,实现细节

5.2.3、封装的实现步骤

5.2.4、访问修饰符

5.2.5、this关键字         

                1.this关键字代表当前对象

                  this.属性 操作当前对象的属性

                 this.方法 调用当前对象的方法。

            2.封装对象的属性的时候,经常会使用this关键字。

5.2.6、Java 中的内部类

       内部类( Inner Class )就是定义在另外一个类里面的类。与之对应,包含内部类的类被称为外部类。

              内部类的主要作用如下:

              1. 内部类提供了更好的封装,可以把内部类隐藏在外部类之内不允许同一个包中的其他类访问该类

              2. 内部类的方法可以直接访问外部类的所有数据,包括私有的数据

              3. 内部类所实现的功能使用外部类同样可以实现,只是有时使用内部类更方便

              内部类可分为以下几种:

                   成员内部类
                   静态内部类
                   方法内部类
                   匿名内部类

5.3、多态

5.3.1、多态的概念

       面向对象的多态性,即“一个接口,多个方法”。多态性体现在父类中定义的属性和方法被子类继承后,可以具有不同的属性或表现方式。多态性允许一个接口被多个同类使用,弥补了单继承的不足。多态概念可以用树形关系来表示

5.3.2、多态的好处

      可替换性:多态对已存在代码具有可替换性

      可扩充性:多态对代码具有可扩充性

      接口性:多态是超类通过方法签名,向子类提供了一个共同接口,由子类来完善或者覆盖它而实现的

      灵活性:它在应用中体现了灵活多样的操作,提高了使用效率

      简化性:

5.3.3、Java中的多态

      java里的多态主要表现在两个方面:

          A、引用多态

                      父类的引用可以指向本类的对象;

                 父类的引用可以指向子类的对象;

                       父类和子类的继承关系,它们的从属是不能颠倒的。当父类的引用指向子类的对象时,该对象将只是看成一种特殊的父类(里面有重写的方法和属性),反之,一个子类的引用来指向父类的对象是不可行的!!

              B、方法多态

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!