Javase系列之面向对象

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Javase系列之面向对象相关的知识,希望对你有一定的参考价值。

  作为一个Java程序员,我们每天做的事情就是OOP(面向对象),可以说万物皆对象,Java是一门面向对象的程序语言,鉴于基本的面向对象知识也是一个较为庞杂的模块,所以博主我准备用多篇文章去介绍Java中的面向对象基础,希望能给初学者提供帮助。

  作为OOP类型的程序语言,Java中最重要的两个概念就是类(class)和对象(object),我们有时候也将对象称之为实例(instance)。类,是某一批对象的抽象,我们可以把他看做成高中数学中的集合,而对象(实例)则是一个具体存在的实体,我们可以将对象看成集合中的元素。类的定义如下所示:

              [修饰符]  class 类名{

                 零到多个构造器定义....

                 零到多个成员变量....

                 零到多个方法....

               }  

  由上所知,在类中包含三类常见的成员:构造器,成员变量,方法。现在我们先从这三个成员入手,去了解Java中的类。

  构造器:构造器是一个类创建对象的基本途径,如果一个类没有构造器,那么它无法创建实例,Java语言提供了一个功能,当程序员没有为类编写构造器的时候,系统会为这个类提供一个默认的构造器,一旦程序员为类编写了构造器,则系统不会再提供构造器。构造器的作用是在创建对象的时候执行初始化操作。如果你不是很理解,请看下面的例子:

        public class Apple {

      //我们先设置苹果的两个属性:产地和重量
      public String producing_area;
      public int weight;
      //接下来我们要为这个苹果类提供构造器
      public Apple(String producing_area, int weight){//小括号里的就是形参列表
          this.producing_area=producing_area;
          this.weight = weight;
      }
      //这个时候我们去实例化Apple类的时候就会包含两个参数
      public static void main(String[] args) {
          Apple apple = new Apple("云南",200);
      //最后我们可以去访问我们为对象设置的两个参数
      System.out.println("产地是:"+apple.producing_area+"   "+"重量是:"+apple.weight+"g");
      }
    }

  上述代码运行结果为:

       产地是:云南   重量是:200g

      由上述代码我们可以看出,我们为Apple类提供了构造器,这个构造器中有两个参数,我们在实例化这个类的时候可以设置与访问这两个参数。

      关于构造器,我要为大家介绍一下构造器的重载。何为重载?构造器名相同,形参列表不同,我们就成为构造器的重载。例如我们刚刚说的Apple类,我们采取构造器重载的方式为这个类提供多种实例化的方式:

      public class Apple {
                              public static String producing_area;
                              public int weight;
      //接下来我们要为这个苹果类提供有参构造器
         public Apple(String producing_area, int weight){
                 this.producing_area=producing_area;
            this.weight = weight;
                                  }
      //我们为这苹果类提供一个无参的构造器
          public Apple() {}

                   //这个时候我们就可以提供两种实例化Apple类的方式

          public static void main(String[] args) {
            Apple apple1 = new Apple("云南",20);
            Apple apple2 = new Apple();
          }

      }

、    上述代码可以看出,构造器重载的目的是为了让类的实例化更加多元化,我们可以根据项目的需求去创建类的实例。

        构造器说完了,我们接着说成员变量,我们在类中(注意:我后面会慢慢讲到Java变量的作用域)所创建的变量,是成员变量,成员变量分为两种,一种是以static修饰的类变量,类变量属于这个类,而没有用static修饰的变量是实例变量,实例变量属于这个类的某个实例。类变量是服务于类,而实例变量是服务于类的实例。所以当这个类在准备阶段,类变量就已经产生,当这个类被销毁的时候,类变量就被销毁。实例变量是在这个对象被创建的时候创建,在这个对象被销毁的时候销毁。一般来说,类访问类变量,实例访问实例变量,但是实例也可以访问类变量(其实在底层会转化成类访问类变量)。语法格式如下:类.类变量   实例.实例变量 实例.类变量。这里我想说的是,我们不能去用类去访问实例变量,原因很简单,Java虚拟机要优先去创建类,然后才去创建实例。那么有可能Java虚拟机创建完类之后,还没有来得及去创建实例变量,这时用类去访问实例变量会报错。最后我想告诉大家的是:成员变量无需显示初始化,我们随时使用成员变量随时可以为它赋值。(上面代码中就有定义实例变量与类变量,大家可以自行体会)

  最后我为大家介绍一下方法,方法是类或者对象行为的抽象,什么意思呢?大多数方法会执行一个功能。方法不是独立的,它要么属于这个类,要么属于这个类的实例,也就是说方法不能独立运行,只能被类或者对象调用。方法的定义:

           [修饰符]  方法返回值  方法名 (形参列表){

          零到多条可执行语句.....

     }

这里我给大家做代码演示的同时也将方法的重载向大家演示出来:

        public class Test {

          public void test(){
            System.out.println("这是无参的方法...");
          }
          public void test(String a) {
            System.out.println("这是重载的test方法"+" "+a);
          }
          public static void main(String[] args) {
            Test t = new Test();
            t.test();
            t.test("test方法被重载了");
          }
        }

    这里两个方法都是为了在控制台上打印一句话,这就是这个方法的功能,此处我们也用到了方法的重载,方法的重载就是方法名相同形参列表不同。最后为大家介绍一下方法的修饰符,方法的修饰符可以是:public  protected  private abstract static final 其中public  protected  private只能出现一个,可以与 static final组合修饰方法,但是abstract和final只能出现一个。方法的返回值类型可以是Java语言所包含的任意数据类型,包括基本数据类型和引用类型。

      总结一下,今天我为大家简单的介绍了一下一个类中的三个常见的成员,明天我将继续为大家介绍Java中面向对象的其他有趣的内容,希望大家能有所收获。

      由于本人水平有限,欢迎各位同行批评指正。

      

 






































以上是关于Javase系列之面向对象的主要内容,如果未能解决你的问题,请参考以下文章

JavaSE之面向对象(下)

Java面试题JavaSE基础之Java面向对象

#yyds干货盘点# JavaSE系列Java类与对象,万物皆对象

JavaSE系列Java类与对象,万物皆对象

JavaSE 学习笔记之面向对象

JavaSE基础之面向对象(上)