学习Java类和对象——类的声明

为了完成本次学习,我们需要掌握:

类的基本概念;
类的声明;
类的成员变量、局部变量和类变量;
成员方法。

实战1.学生类的定义:

定义一个 Student 学生公开类,该类具有学号 id(int),年龄 age(int),grade(int) 等属性;它们所具有的行为有学习 study(),考试 examination(),讲话 tell(),它们都无返回值和传入的参数。

study 方法的功能为换行输出:学号为xx的学生正在学习。;  
examination 方法的功能为换行输出:xx年级正在考试。;  
tell 方法的功能为不换行输出:正在讲话的是一个xx岁的学生。。

/**
 * 任务:定义一个 Student 学生公开类,该类具有学号 id(int),年龄 age(int),grade(int) 等属性;
 * 它们所具有的行为有学习 study(),考试 examination(),讲话 tell(),它们都无返回值和传入的参数。
 * 类名为:Student
 */

// 第一步:创建一个名为 Student 的公开类
public class Student {  
// 第二步:定义学生的属性
int id;
int grade;
int age;
// 第三步:定义学生的行为方法
public void study()
{
    System.out.print("学号为"+id+"的学生正在学习。\n");
}
public void examination()
{
    System.out.printf(grade+"年级正在考试。\n");
}
public void tell()
{
    System.out.printf("正在讲话的是一个"+age+"岁的学生。");
}
}

实战2:复数运算

求两个复数相加后的结果。两个复数之间相加的运算法则:实部与实部相加,虚部与虚部相加。

/**
 * 任务:求两个复数相加后的结果。
 */

// 定义一个类,类名为 Complex
public class Complex {
    // 定义四个变量:real1、image1、real2、image2 分别表示第一个虚数的实部与虚部和第二个虚数的实部与虚部,类型为int
    int real1;
    int image1;
    int real2;
    int image2;
    // 定义一个成员方法,方法名为add,不带参数,实现两个复数相加,将实部结果与虚部结果用+拼接后返回,返回类型为String,
    public String add()
    {
        int real,image;
        real = real1 + real2;
        image = image1 + image2;
        String result = "";
        if(real != 0 && image != 0 )// 相加后结果如果有虚部,将计算结果的虚部后加上i
        {
            result = real + "+" + image + "i";  
        }
        else if(real !=0 && image == 0)// 如果没有虚部,只返回实部即可。
        {
            result = real + "";
        }
        else if(real == 0 && image != 0)// 如果没有实部,只返回虚部,将计算结果的虚部后加上i
        {
            result = image + "i";
        }
        else if(real == 0 && image == 0)// 如果都没有值,返回零。
        {
            result = 0 + "";
        }
        return result;
    }
    
}



Java 是一门面向对象的编程语言,而面向对象最关键的两个词汇是类与对象

类: 类就是具备某些共同特征的实体的集合,它是一种抽象的数据类型(它属于引用数据类型),它是对所具有相同特征实体的抽象。

对象:是类的一个实例,有状态和行为。每个对象拥有自己独立的属性,依靠属性来区分不同对象。

在面向对象的程序设计语言中,类是对一类“事物”的属性与行为的抽象。属性是事物的状态,行为就是这个事物可以做什么。比如,人就是一个类,那么具体的某个人“小明”就是“人”这个类的对象,而“体重、性别、年龄”等信息就是对象的属性,人的行为比如“吃饭、睡觉和玩”等就是对象的方法。

注意:类只是一个抽象的概念,它仅仅是一个概念,是不存在的实体!

类的声明
在 Java 中定义类,使用关键字 class 完成。语法如下:  

权限修饰符 class 类名称 {  
         属性 (成员变量) ;  
         行为 (成员方法(函数)) ;  
}
 
权限修饰符可写可不写,我们之前见到的 public 就是权限修饰符的一种。

例子:声明一个人类。

public class Person {  
    // 属性 (成员变量) ;  
    // 行为 (成员方法(函数)) ;  
}


public 表示“共有”的意思。如果使用 public 修饰,则可以被其他类和程序访问。每个 Java 程序的主类都必须是 public 类。

创建一个新的类,就是创建一个新的数据类型。定义类其实就是在定义类中的成员(成员变量和成员函数)。

变量
在 Java 中类的成员变量定义了类的属性。例如,一个人类中一般有体重、性别和年龄等属性,这时就需要定义体重、性别和年龄 3 个属性。

Java 语言支持的变量类型有:

局部变量:在类的方法中定义的变量,且只能在该方法中使用,我们之前学习的变量都是局部变量;定义以后必须赋值才能使用;

成员变量:也称为实例变量,它的定义在方法的外部,直接写在类当中;随着对象创建而诞生,随着对象被垃圾回收而消失;如果是对某个对象的特殊描述,可以用该变量;定义时如果不赋值的话,会采用默认初始值;

静态变量:也称为类变量,实质上是一个全局变量。它的定义在方法的外部,直接写在类当中,与类共存亡,它用 static 修饰,如果某个内容是被所有对象所共享,那么该内容就应该用 static 修饰;定义时如果不赋值的话,会采用默认初始值。

例子:

public class Demo {  
    static int a;     // 类变量  
    int b;     // 实例变量  
    public static void main(String[] args) {  
        int c;     // 局部变量  
    }  
}

我们再来看一下它们是如何被引用的:

局部变量可以直接在方法中赋值或引用,就像我们之前学习的一样;
成员变量必须得通过创建一个对象后引用;
类变量在这个类中可以直接拿来用,若是在另一个类中要用到该类的类变量,需要通过类名.变量名引用。
现在我们对成员变量已经有了一定的了解,接下来看个例子吧。

在 Person 类中定义该类的成员变量,也就是该类的属性。

public class Person {  
    // 属性 (成员变量) ;  
    double weight ;     // 为该类定义一个表示体重的成员变量  
    char sex;     // 为该类定义一个表示性别的成员变量  
    int age;     // 为该类定义一个表示年龄的成员变量
}


成员方法
在 Java 中类的成员方法定义了类的行为。例如,一般人会有吃饭、睡觉和玩等行为,在定义人的类时,就需要定义吃饭、睡觉和玩 3 个方法。

类的各种功能操作都是用方法来实现的,属性只不过提供了相应的数据。一个完整的方法通常包括方法名称、方法主体、方法参数和方法返回值类型。

成员方法的声明语法:  

[权限修饰符] 返回值类型 方法名([参数类型 参数名]) {
    // 方法体
    // 返回值
}

注意:[ ] 表示可写可不写。

返回值类型:我们之前学到的八种基本类型和 void 都可以用来做方法的返回值类型。要注意的是 void 表示没有返回值,所以不需要写返回值语句,而其他类型都需要返回一个该类型的值。

返回值语句:  

return 返回值;  
参数类型 参数名:可以有多个,这些参数都要有自己的数据类型,可以是原始数据类型,也可以是复杂数据类型,一个方法主要依靠参数来传递消息。方法主体是方法中执行功能操作的语句。

例子:

public int a(){     // 定义一个名为a,返回值类型为int的成员方法
// 返回值语句: return 返回值;  
return 0;     // 由于返回值类型为 int,所以需要返回一个int型的常量或变量
}
public void c(){  // 定义一个成员方法,它的名为c,返回值类型为void,该方法不需要返回值。
}

以上是没有携带参数的,那携带参数的又是怎么回事呢?

例子:

public double b(int a,double b){     // 定义一个名为c,返回值类型为double的成员方法,其携带的参数有两个,一个为int型的变量a,一个double型的变量b  
double c = a*b;  
return c;     // 由于返回值类型为 int,所以需要返回一个int型的常量或变量
}

成员方法的调用必须通过实例一个对象来调用。

同样方法也可以被 static 修饰,变为静态方法,只不过变为静态方法以后,就不能调用实例变量,而成员方法却可以调用静态变量。如果在该类中调用静态方法的话,我们可以直接调用,而如果不在同一个类中,需要通过类名.方法名()或者实例一个对象,通过该对象调用静态方法。

例子:在人的类中定义它的成员方法(行为)。  

public class Person {  
    // 属性 (成员变量) ;  
    double weight = 100.00;     // 为该类定义一个表示体重的成员变量  
    char sex = '男';     // 为该类定义一个表示性别的成员变量  
    int age = 18;     // 为该类定义一个表示年龄的成员变量
    // 定义一个名为a,返回值类型为int的成员方法  
    public void eat(){     // 该成员方法表示吃饭这个行为  
        System.out.printf("我喜欢吃饭,所以我的体重高达%f千克\n",weight);  
    }
    // 定义一个名为a,返回值类型为int的成员方法  
    public void sleep(){     // 该成员方法表示睡觉这个行为  
        System.out.println("我正在睡觉!");  
    }
    public void play(){     // 该成员方法表示玩这个行为  
        System.out.printf("我的性别为%c,今年%d岁,我喜欢玩耍",sex,age);  
    }
}  

你可能感兴趣的:(java类与对象,java)