• 从零开始学Java 第8章 类和对象


    第8章  类和对象
    Java语言是一种纯面向对象的语言,如果要使用Java进行面向对象编程,首先就要建立面向对象思想。

    8.1  类
    面向对象的程序都是由对象来组成的。所以在研究对象时首先要考虑对象的属性和行为。而有一些不同的对象却会表现出相同的属性或行为,例如苹果橘子等。通常将属性及行为相同或者相似的一些事物诚挚为类。类就是事物的集合和抽象。它所代表的是这类事物所共有的一些行为和属性
    8.1.1  类的一般形式
    类是对象的一般形式,Java程序的编写,就是将这些对象的共同点抽取出来,然后使用程序语言的形式表达出来。例如把一个人看作是一个对象,把他作为一个类抽象出来,那么这个人就可以看作是人类的一个对象。
    8.1.1 在Java中使用的修饰符主要由以下几种。
    private:只有在本类中可见。
    protected:在本类或者是同一个包中都可见。
    public:对于任何类都可见。
    默认(无修饰符):在本类或者是能够一个包中都可见。
    8.1.2  方法
    方法是类中比较重要的组成成分,方法是实现类的行为,方法主要分为有返回值和没有返回值两种,如果方法中没有返回值,可以使用关键字void来进行修饰。如果有返回值的话,方法的类型必须和方法的返回值类型相同。
    8.1.3  主方法
    在程序中,主方法就是程序的入口。程序是一间屋子,主方法就是屋子的门。在类中,主方法是Main方法,主方法是由public来进行修饰,其中没有返回值,方法中的参数是字符串类型的args,一个完整的main方法为。
    public static void main(String[] args) {

    }
    8.1.4  构造方法
    构造方法是类中比较特殊的一种方法,主要是用于初始化一些参数,相当于计算器中的“清零”。使用构造方法可以把所有的数字变量全都设置为0,把所有的布尔类型值设置为false,把所有的对象变量设置为null。
    Java中提供有默认的构造方法,如果在类中没有提供自己的构造方法,在编译时,编译器就会为这个类添加一个构造方法。构造方法的使用语句是。
    People people =new People();
    8.1.5  方法的重载
    在Java中,统一个类中的两个或多个方法可以共享一个相同的名称。只要它们的参数不同就可以。这就是重载的概念。在程序调用这些具有相同名称的方法时,会根据其中的参数类型和数量来决定要调用的方法是哪一个。
    8.2  对象
       现实生活就是由对象组成的,例如抽象的是动物、书籍、水果等,具体的又有杯子、桌子、椅子等。无论它们如何来进行划分,都具有属性,例如大小、颜色等。同时又向外界诚信出各自所特有的行为。例如将一台电脑看做是一个对象,用属性来表示他当前的状态,如星号、颜色、配置等。而它的行为是运行操作系统等。当对计算机进行操作时,不用考虑计算机中的各个零件如何去运作,只需要根据计算机可能的行为进行响应的操作。
    8.2.1  对象的创建和使用
    使用一个对象之前,首先要去创建该对象。这样创建一个对象主要分为声明和初始化两个步骤。声明该类型变量,该变量只是引用的一个实例的对象。然后要或得类的一个实例对象并把它赋值给该变量。这个过程可以使用运算符new来完成。
    8.2.2  构造方法重载
    一般在创造对象时所提供的模板也就是该类中的无参构造方法。但在程序的编写过程中不一定每次创造对象的模板都是相同的,而只是对其中的一部分进行初始化。所以使用前面所介绍到的重载方法,对构造方法进行重载。这样一来就可以增加几个不同的构造方法。例如下面的实例,在类中创建几个不同的构造方法,在创建该类的对象时,也可以创建不同的对象模板。
    8.2.3  对象类型的参数传递
    前面介绍到了方法中节本类型的传递,传递一个基本数据类型的参数还是比较简单的。如果所传递的参数是一个对象呢,这样操作就比较特殊了,对象类型的参数传递是将对象的引用传递给参数,这样也是传值。
    8.3  关键字
    在编程的过程中,有一些数据是对象公用的,如果给这些对象都给一个这个数据,这些数据的同步将是很大的问题。假设在一个学生类中,除了描述这些学生的信息,需要有一个int型的数据类型来描述当前学生的个数,如果给每一个学生都给这么一个值,显然是多余的,并且每增加一个人都需要更新所有对象的属性值。Java提供了静态变量的概念来解决这个问题,静态变量是用static来描述的。而常量则使用final来进行描述的。
    8.3.1  static关键字
    static关键字可以用来修饰类的变量、方法和内部类。它的意思是静态的,也可以理解为全局。使用它来定义的变量不与具体的示例有关,而是属于全局。如果要调用它,只能够通过类名来直接调用,而不是先要创建一个对象,再通过对象来调用方法。
    1  静态变量
    静态变量是属于类的,它和对象没有关系,只能是类和它进行关联,而不是对象。普通的各种变量都是属于某个对象的,有一个对象就有一个这个数据的副本。而静态变量的话则是整个类只有一个变量,它跟对象是没有关系的,跟它相关联的类而不是对象。
    2  静态方法
    关键词static还可以用来描述方法,用static描述的方法称为静态方法。访问静态方法也是使用“类名.方法名”的方式来访问,一般在工具类中定义一些静态方法来处理一些事情,这样可以方便的使用这些静态方法。在Java常用的数学工具类Math类中的方法就大多数是静态的,可以很方便的访问。
    使用静态方法的时候需要注意下面两点:
    静态方法不能直接访问非静态变量
    非静态方法可以直接访问静态变量
    3  静态常量
    在实际应用中,静态变量不是很常用,最常用的是静态常量,用了存储一些在程序中不会改变的信息。它的定义如下:
    public static final int X=123;
    该变量在程序中不可以改变的,不能通过赋值改变它的值。
    现在已经介绍了静态变量、静态方法、静态常量,静态变量和常量的初始化是调用构造函数之前完成的。
    8.3.2  final关键字
    final的意思是“最终的”,这个字段和static一样,可以对变量、方法和类进行修饰。修饰不同的元素所代表的含义也是不同的。但是使用final修饰过的都是不可改变的。
    8.3.2  final关键字
    1.final修饰变量
    使用final修饰过的变量,不管该变量时一个类的成员还是一个临时的变量,这个变量都不可以被重新赋值。final类通常都会被用作表示一个类中的固有属性,使用final修饰的变量一般使用大写来表示。
    2.final修饰方法
    如果使用final对方法进行修饰,就会会使得任何继承类都无法覆盖该方法,但是重载不会受到限制。
    3.使用final修饰类
    如果将一个类设置成final类型,就表示这个类不能够作为任何类的父类,修饰后的类中方法会全部被自动定义成为final类型。

    8.4 包
    包是Java面向对象编程中所特有的概念。包是由类和接口所组成的集合,是用来将相关的一组类组织在一起进行管理。它体现了封装特性,可以将类和接口封装在一个包内。而且包的引入也解决了类命名冲突的问题。
    8.5  小结
    本章的内容对Java的类和对象进行了简单的介绍,并介绍了对象和构造函数的知识,再就是介绍了static关键字的使用。然后就是了介绍参数传递和包的使用。本章的难点在于理解面向对象的思想,Java有一个口号是“万物皆对象”,如何接受这种思想,是需要读者深入思考的。通过本章的学习,读者可以Java的面向对象特性有初步的了解。再接下来的内容里会进步一步介绍Java的面向对象特性,希望读者再接再厉,更上一层楼。

  • 相关阅读:
    Day 9 作业题(完成)
    Day 9 函数的初识1
    Day 8 集合与文件的操作
    Day 7 深copy和浅Copy
    Day6 ,周期末考试试题
    Day 6 编码的进阶
    Day5 作业(完成)
    Day 5 字典的操作
    Day4 作业
    Day 4 list 列表的使用方法
  • 原文地址:https://www.cnblogs.com/yoogoo/p/2467264.html
Copyright © 2020-2023  润新知