Java学习(对象与类)——类的定义(字段,构造器,方法)详细介绍

目录

定义类

关于字段

关于构造器(构造方法)

关于方法


  • 什么是主力类?

    • 主力类(workhorse class)是复杂应用程序所需的类,通常这些类没有main方法,却有着自己的实例字段与实例方法

    • 想要构建一个完整的程序,就需要多个主力类,以及一个带有main方法的类

定义类

  • 类最简单的定义形式:

    class ClassName
    {
        field1;//实例字段1
        field2;//实例字段2
        ..........
        constructor1;//构造器1
        constructor2;//构造器2
        ..........
        method1;//方法1
        method2;//方法2
        .........
    }

关于字段

  • 字段修饰符(public,private,static,final)

    • public数据字段,允许程序中的任何方法对其进行读取和修改,任何类的任何方法都可以修改public字段,这完全破环了封装性

    • private数据字段,确保只有类自身的方法能访问这些实例字段,而其他类的方法则不能读写这些字段

    • static数据字段,这个字段和类一起加载,这个字段是属于类的,可以直接通过类名调用该字段

    • final可以将实例字段定义为,在构造对象之后不可修改的字段,也就是说,这样的字段必须在使用构造器构造对象时初始化

      • 带参数构造器,final数据在实例化时设置值,具体代码在关于构造器介绍

  • 静态字段(类字段)

    • 静态字段属于类,而不属于任何单个的对象

    • public static :其他类可以调用这个字段对其进行修改和读写

    • private static:

      • 其他类不能调用这个字段,

      • 在其他类里将类实例化为一个对象也不能调用这个字段

      • 只能由类自身定义一个getName方法setName方法,其他类通过对类的实例化为一个对象调用此方法才能对这个字段进行读写,具体代码在关于方法篇介绍

    • 静态常量

      • 静态变量很少用,但静态常量却很常用

      • 例如,在java的Math类中定义的一个静态常量PI

        public class Math{
            ...
            public static final double PI=3.1415926535;
            ....
        }
        • 在使用中我们常调用Math.PI来使用

        • static不能省略,如果省略,则PI就变为一个实例字段,也就是说需要实例化Math类得到一个对象来访问PI

        • 包括经常使用的System.out,它在System类中的声明和PI类似

        • 在这里的public修饰符,不用担心每个类的对象都可以修改公共字段,因为PI被声明为final在对象构造之后,这个值就不允许再改变

  • 非静态字段(实例字段)

    • 对于非静态的字段,也就是实例字段,每个对象都有自己的一个副本,实例字段再其他类中调用需要先实例化类得到一个对象之后再调用,当然,如果是private修饰的实例字段,需要在原本的类中定义方法,来让其他类能访问private字段

       

关于构造器(构造方法)

  • 什么是构造器

    • 构造器是创建对象时被自动调用的特殊方法

    • 类中的构造器也称为构造方法,是在进行创建对象的时候,必须要调用的,并且构造器要有以下特点:

      • 必须和类的名字形同

      • 必须没有返回类型,也不能写void

  • 编译后打开class文件查看构造器:

  • 当用new实例化一个对象时会自动调用构造器

  • 无参构造与有参构造

    • 有参构造:一旦有了有参构造,无参构造就必须显式定义

    • 无参构造:实例化对象默认调用类隐藏的无参构造方法

  • 构造器的作用

    • 使用new关键字,后必须要有构造器

    • 设置对象实例化后属性的初始值

  • 对final类型的数值,使用有参构造器设置其初始值

关于方法

  • 如何定义方法?

    修饰符 返回值类型 方法名(...){
        方法体
        return 返回值;
    }
    • return表示方法的结束,返回结果

    • 参数列表:参数类型,参数名

  • 方法的隐式参数与显式参数

    • 对于Teacher类,隐式参数时出现在方法名之前的Teacher类的对象,显示参数是唯一括号中的数值(有人把隐式参数称为方法调用的目标或者接受者)

  • 静态方法和非静态方法

    • 区别一:

      • 在类Teacher中定义一个静态方法,一个非静态方法

      • 静态方法只能调用静态字段,静态方法不能在对象上执行操作

      • 非静态方法能调用静态字段和实例字段

    • 区别二(静态方法和非静态方法之间的调用):

      • 静态方法不能调用非静态方法

      • 非静态方法能调用非静态方法和静态方法

      • 静态方法和类一起加载,非静态方法只有在类被实例化之后才创建,存在的方法调用不存在的方法会报错

    • 注意(对象可以调用静态方法和非静态方法,但静态方法一般由类直接调用):

    • 可以使用静态方法的条件:

      • 方法不需要访问对象的状态,因为它需要所有的参数都通过显示参数提供

      • 方法只需要访问类的静态字段

  • 私有方法

    • 为什么用私有方法?

      • 在实现一个类时由于公共数据十分危险,可以被调用或者修改,所以应该将所有的数据字段设置为私有的

      • 实现方式:只需要把关键字public改为private就行

      • 重点在于,只要方法是私有的,类的设计者就可以确信他不会在别处使用,所以可以将其删去,如果一个类是公有的就要考虑到有没有其他代码调用这个方法,就不能随意删除

  • 访问器方法和修改器方法

    • 当字段被定义为private时,只能通过类内部定义访问器方法get(),和修改器方法set()来让其他类访问或者修改字段的值

  • main方法

    • main方法也是静态方法

    • main方法不对任何对象进行操作,实际上,在启动时还没有任何对象,静态的main方法将执行并构造程序所需要对象

    • 一个类可以有一个main方法

  • 方法参数

    • 值传递和引用传递

      • Java程序设计语言总是采用按值调用,对象引用实际是按值传递

      • 值传递:一个方法不可能修改基本数据类型的参数。

      • 引用传递:方法的参数是一个对象,方法得到的是对象引用的副本,原来的对象引用和这个副本都引用同一个对象

      • 参数是对象时,这个参数指向了具体的类

    • 在Java中对方法参数能做什么不能做什么:

      • 方法不能修改基本数据类型的参数(即数值型或者布尔型)

      • 方法可以改变对象参数的状态

      • 方法不能让一个对象引用一个新的对象

  参考书籍:Java核心技术 卷1(原书第11版)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Iron_Sp-man

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值