Java小白入门到实战应用教程-类和对象

前言

在前面的内容中我们已经掌握了变量和方法(函数)的语法及应用。然后在写样例代码的过程中大家应该也注意到了,我们所有的代码都是在class块里面的,我们前面也简单提到了class是什么东西。

那今天我们就来了解Java中非常非常重要的概念:类

在Java编程中,类(Class)是构建程序的基本构件之一。我们在最开始的时候就提到了java是面向对象的语言,而类是对象的模板,通过类去创建对象,类中定义了对象的属性(变量)和方法(行为)。

正文

语法

在Java中,使用class关键字去定义类,然后{}中为类体内容,类中可以声明变量和方法。

public class 类名称 {  
    // 类的属性(变量)  
    dataType 变量名称;  
  
    // 类的构造方法  
    public 类名称() {  
        // 初始化代码  
    }  
  
    // 类的其他方法  
    public void 方法名() {  
        // 方法体  
    }  
}

命名规范

按照我们的开发规范,通常类名称首字母大写。然后采用大驼峰命名法,而变量名和方法名通常采用小驼峰命名法,也就是首个单词的首字母小写其余单词的首字母大写。

属性

在上面的语法中,我们可以看到在类中可以定义属性,也叫做变量。我们之前学习变量的时候实在main方法中去定义的,现在是定义在了方法外。

是的,变量可以定义在方法外,称为成员变量,而定义在方法内的变量称为局部变量。

而局部变量和成员变量的区别主要体现在作用域和生命周期上,成员变量的作用域是在整个类文件中的,而局部变量的作用域只体现在它所在的局部范围内,比如方法内。所以成员变量的作用域大于局部变量,在方法内也可以去调用成员变量。

至于他们详细区别,我们放在后面单独的章节中去进行详解。

构造方法

在语法中,有一段代码叫做构造方法,也叫构造函数。

它是用于在通过类去创建对象时初始化对象的属性的方法,简单说就是创建对象时给对象的属性进行赋值操作的方法。构造方法是一种特殊的函数。

当使用new关键字创建类的实例时,构造方法会被自动调用,以初始化新创建的对象。

构造方法具有以下几个特点:

  1. 名称特殊:构造方法的名称必须与类名完全相同(包括大小写)。
  2. 无返回类型:构造方法没有返回类型,甚至连void都不写。
  3. 重载:和类的其他方法一样,构造方法也可以重载。这意味着一个类可以有多个构造方法,只要它们的参数列表不同。重载的概念后面再将。
  4. 初始化对象:构造方法的主要目的是初始化新创建的对象。你可以在其中为对象的属性设置初始值,或者执行一些必要的初始化步骤。
  5. 自动调用:当使用new关键字创建类的实例时,会自动调用相应的构造方法。

当我们在类中没有写构造函数的时候,类中会自动有个默认无参的构造函数。

但是当我们写了有参的构造函数后,那个默认无参的构造函数就不存在了,如果需要的话可以手动写上。

样例代码

我们在了解了类的语法后,现在去写一个demo。

比如我们想定义一个小狗的类,小狗通常都会给它取一个名字,然后小狗通常也有年龄,然后小狗有一些行为:它可以吃东西,可以叫“汪汪”

public class Dog {

    String  name;

    int  age;

    public Dog(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public void say(){
        System.out.println("汪汪!!");
    }

    public void eat(){
        System.out.println("吃了一个鸡腿~");
    }
}

解释:

我们创建一个class,类名叫做Dog,然后狗的名字和年龄都是狗的属性,所以定义了两个变量,然后狗具有吃和叫的行为,所以定义了两个方法(函数)。

然后还有一个有两个参数的构造函数,通过这个构造函数取给类中的两个属性去进行赋值。

创建对象

创建对象通过关键字”new“。

语法:

对象类型  变量名 = new  对象类型();

其实和定义变量的格式差不太多,因为我们创建的对象需要赋值给一个变量,然后用变量去使用这个对象。

样例

那现在我们用这个类去创建对象

public class Dog {

    String  name;

    int  age;

    public Dog(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public void say(){
        System.out.println(this.name + " 汪汪");
    }

    public void eat(){
        System.out.println(this.name + " 吃了一个鸡腿~");
    }

    public static void main(String[] args) {
        Dog  wangcai = new Dog("旺财",3);
        
        wangcai.say();

        wangcai.eat();
    }
}

解释:

我们加了一个main函数作为程序的入口,然后创建Dog类的对象,因为在Dog类中定义了有两个参数的构造函数,所以使用new关键字创建对象的时候就会自动调用构造函数,所以我们创建对象时需要传两个参数去给到类里面的构造函数。如果我们在类中还定义了无参的构造函数,那么new对象的时候就可以不传参数,因为会自动调用类中无参的构造函数。

所以Dog wangcai = new Dog(“旺财”,3);这句的意思就是通过Dog类创建了一个对象wangcai,然后传了两个参数给Dog类的构造函数,所以这个wangcai对象中的name属性值就为”旺财“,age属性值就为3。

然后我们通过对象名去调用对象的方法。

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值