注册 登录
Java基础教程

第一章: 开启Java学习之旅

第二章: 掌握计算机基础知识

第三章: 掌握命令行基础知识

第四章: 我的第一个Java程序

第五章: Java编程必备基础

第六章: Java编程的核心:控制结构

第七章: Java面向对象基础

第八章: Java面向对象进阶

第九章: Java字符串类型

第十章: Java数组与数据结构

第十一章: Java高级数据结构

第十二章: Java并发编程基础

首页 > Java基础教程 > 第七章: Java面向对象基础 > 7.3节: 类的定义:类属性与类方法

7.3节: 类的定义:类属性与类方法

薯条老师 2021-11-26 09:51:02 161260 0

编辑 收藏

广州番禺Python, Java小班周末班培训

第四期线下Java, Python小班周末班已经开课了,培训的课程有Python爬虫,Python后端开发,Python办公自动化,Python大数据分析, Java中高级工程师培训。授课详情请点击:http://chipscoco.com/?cate=6    

7.3.1 class关键字

在Java中通过class关键字来自定义一个数据类型,使用class自定义的数据类型就叫做类。使用class定义类的基本语法:

[modifier] class ClassName [extends BaseClass] [implements interface]{
 // {}里面的为类体    ; 
}

modifier表示类修饰符,用来控制类的可见性,关于类的可见性会在下一小节继续讲解。ClassName表示自定义的类名,为类取名时,它首先必须符合变量名的基本语法,此外,类名还应当遵循以下两个重要的规则:

(1)良好的可读性
   类的名称要有意义,有较强的可读性,类名尽量用英文单词来进行命名。
(2)采用驼峰式命名法
   在驼峰式命名法中,单词的首字母都为大写。

extends是Java的关键字,用来继承其它类。implements也是一个关键字,用来实现接口。关于类继承和接口会在后面的教程中详细讲解,初学者现在只需重点掌握如何自定义一个类。

7.3.2 类访问修饰符

Java中的类修饰符用于访问控制,以下为Java中的类的访问控制符:

访问控制符

描述

public

其它所有类都可以访问该类。用plublic修饰的类为主类,在一个Java程序中,有且仅有一个主类。

在定义类时也可以不加类修饰符,则此时的类只能被同一个包中的类访问。在Java中使用package关键字来定义包,在一个包内可以包含多个类。同一个java文件中的类默认在同一个包。现在来定义一个Dog类,读者需注意的是,在一个Java程序中有且仅有一个用public修饰的类, 也即,在一个Java程序只能定义一个主类。

代码实例-定义Dog类:

class Dog{
    ;
}

如下图所示,读者可打开IDEA,打开HelloJava项目,然后在IDEA的project视窗中选中src,再右键New一个名为Dog的Java Class。

图片.png 

也可以直接在HelloJava.java中定义一个Dog类。本教程的讲解方式是直接在Java文件中定义Dog类,以便读者阅读。

7.3.3 定义类属性

类属性表示这种数据类型共有的特征。定义类属性的语法很简单,直接在{}中的类体中,以定义变量的语法形式来定义类属性。定义类属性的基本语法:

[modifier] static [modifier] dataType property;

第一个modifier表示访问控制符,以下为修饰类属性的访问控制符:

访问控制符

描述

public

其它所有类都可以访问该属性

protected

只能被类自身,该类的子类,以及同一个包中的其它类访问

private

只能被类自身访问

在定义类属性时也可以不加访问控制符,则此时的类属性只能被自身以及同一个包中的类访问。类属性也叫做静态属性,在定义类属性时必须加上static修饰符,否则该属性会变成对象属性。dataType表示数据类型,property表示属性名,属性名通常使用小驼峰式命名法。关于变量的命名风格可复习5.2.2节中的内容。

代码实例-为Dog类添加类属性:

class Dog{
    // 定义公有的类属性hasATail,该属性能被其它所有类访问
    public static boolean hasATail  = true;
    // 不加任何访问控制符时,该属性只能被自身以及同一包中的类访问
    static boolean canBark  = true;
    // 定义私有类属性species,0表示狗所属的物种,该属性只能被自身访问
    private static int species = 0;
}

类属性表示该类型共有的特征,为所有对象共享。在7.4节会讲解如何对类进行实例化,以及通过对象来访问类属性。第二个modifier表示变量修饰符,在5.2节讲到了用final来修饰变量,当用final来修饰变量时,则变量被赋值后就不能再被修改。读者在定义类属性时,如需表示只读的语义,即属性只可读取不能修改,则应该加上final修饰符。

代码实例-为Dog类添加只读的类属性:

class Dog{
    // 添加只读的类属性can_guide
    public static final boolean canGuide = true;
    // 定义公有的类属性hasATail,该属性能被其它所有类访问
    public static boolean hasATail  = true;
    // 不加任何访问控制符时,该属性只能被自身以及同一包中的类访问
    static boolean canBark  = true;
    // 定义私有类属性species,0表示狗所属的物种,该属性只能被自身访问
    private static int species = 0;
}


7.3.4 成员操作符

定义类属性以后,在其它类中可通过类名加成员操作符.来访问类属性:

class Dog{
    // 定义公有的类属性hasATail,该属性能被其它所有类访问
    public static boolean hasATail  = true;
    // 不加任何访问控制符时,该属性只能被自身以及同一包中的类访问
    static boolean canBark  = true;
    // 定义私有类属性species,0表示狗所属的物种,该属性只能被自身访问
    private static int species = 0;
}


public class HelloJava{
    public  static void main(String[] args) {
        // 通过成员操作符.来访问Dog类的公有类属性hasATail
        System.out.println(Dog.hasATail);
        // 在HelloJava类中不能访问Dog类的私有类属性species
        // System.out.println(Dog.species);
    }

7.3.5 定义类方法

类方法表示该数据类型共有的行为。定义类方法的基本语法:

[modifier] static returnType methodName(parameterType parameter1[,parameterType parameter2...]) {
    return value;
}

modifier表示访问控制符,类方法的访问控制符同类属性访问控制符,不再赘述。returnType表示方法的返回值类型,如果没有返回值,则应设置为void。

类方法也是函数,函数就是一个代码块,初学者可将函数理解为从输入到输出的转换器。在计算机编程中,可将重复性的代码块封装到一个函数中,以便复用。当需要实现相同的功能时,再直接调用这个函数。

methodName表示方法名,在Java中方法名通常采用混合式命名法。parameter1,parameter2等为函数的形参,parameterType为参数的类型,在类方法中,可以同时定义多个形参,形参之间以英文逗号进行分隔。

与形参相对的是实参。形参是函数定义时的占位符,而实参是调用函数时实际传递的参数。

{}里的为函数体,return语句用来结束函数的执行,当需要返回值给函数的调用方时,直接在return语句后面带上需返回的值。

代码实例-为Dog类添加类方法bark:

class Dog{
    // 定义公有的类属性hasATail,该属性能被其它所有类访问
    public static boolean hasATail  = true;
    // 不加任何访问控制符时,该属性只能被自身以及同一包中的类访问
    static boolean canBark  = true;
    // 定义私有类属性species,0表示狗所属的物种,该属性只能被自身访问
    private static int species = 0;
    
    
    /*
    (1) 定义一个公有的类方法bark, 函数的返回类型为void, 说明无返回值
    (2) 类方法bark包含一个形参times, 类型为int
     */
    public static void bark(int times){
        // 在函数体中执行for循环,根据times的值来指定执行的次数
        for(int index=0; index < times; ++index){
            // 每次都会输出woof的狗叫声
            System.out.println("woof");
        }
    }
}

在其它类中通过类名+成员操作符+方法名来访问类方法:

public class HelloJava{
    public  static void main(String[] args) {
        // 执行Dog类的类方法bark,传递实参3
        Dog.bark(3);
    }
}

类方法表示该类型共有的行为,比如为Dog类定义的类方法bark,bark是狗叫的意思,所有狗当然具有这样的行为。类方法表示该类型共有的行为,为所有对象共享,就如同狗会狗叫,那么某一条具体的狗肯定也会狗叫。在7.4节的教程中,会讲解如何通过对象来访问类方法。

7.3.5 课后习题

(1) 在Java中如何自定义数据类型?

(2) 谈谈你对类属性,类方法的理解。

(3) 假设要对Python, C++,Java等编程语言进行建模,如何定义表示编程语言的数据类型?

编程语言这种数据类型会有哪些类属性和类方法?

(1) 将第(3)题中的编程语言类,使用Java自定义一个数据类型。

7.3.6 高薪就业班



欢迎 发表评论:

请登录

忘记密码我要注册

注册账号

已有账号?请登录