首页 > 其他分享 >2.1. 类与对象

2.1. 类与对象

时间:2023-05-29 17:33:08浏览次数:25  
标签:String 对象 void breed color 2.1 age myDog

在 Java 中,类和对象是面向对象编程的基本构建块。类是一种模板,用于定义对象的属性和行为。对象是类的实例,具有类定义的属性和行为。

2.1.1. 类的定义

要定义一个类,可以使用以下语法:

class ClassName {
    // 成员变量(属性)
    // 成员方法(行为)
}

类的名称应遵循驼峰命名法,首字母大写。类可以包含成员变量(属性)和成员方法(行为)。

示例1:定义一个简单的类

class Dog {
    // 成员变量
    String breed;
    int age;
    String color;

    // 成员方法
    void bark() {
        System.out.println("Woof!");
    }

    void sleep() {
        System.out.println("Zzz...");
    }

    void play() {
        System.out.println("Playing...");
    }
}

上述示例中,定义了一个名为 Dog 的类,包含三个成员变量(breedage 和 color)和三个成员方法(bark()sleep() 和 play())。

2.1.2. 创建和使用对象

创建一个对象,需要使用 new 关键字和构造方法。构造方法是一种特殊的成员方法,用于初始化对象的属性。构造方法的名称与类名相同,没有返回类型。

ClassName objectName = new ClassName();

要访问对象的属性和方法,可以使用点(.)操作符。

objectName.property;
objectName.method();

示例2:创建和使用对象

class Main {
    public static void main(String[] args) {
        // 创建 Dog 对象
        Dog myDog = new Dog();

        // 设置属性值
        myDog.breed = "Golden Retriever";
        myDog.age = 3;
        myDog.color = "Yellow";

        // 调用方法
        myDog.bark();
        myDog.sleep();
        myDog.play();

        System.out.println("My dog is a " + myDog.breed + " and its color is " + myDog.color + ".");
    }
}

2.1.3. 构造方法和 this 关键字

构造方法用于初始化对象。可以为类定义多个构造方法,它们具有不同的参数列表。这称为构造方法重载。

this 关键字用于引用当前对象。在构造方法中,可以使用 this 关键字区分参数和成员变量。

示例3:构造方法和 this 关键字

class Dog {
    // 成员变量
    String breed;
    int age;
    String color;

    // 构造方法
    Dog(String breed, int age, String color) {
        this.breed = breed;
        this.age = age;
        this.color = color;
    }

    // 成员方法
    void bark() {
        System.out.println("Woof!");
    }

    void sleep() {
        System.out.println("Zzz...");
    }

    void play() {
        System.out.println("Playing...");
    }
}

class Main {
    public static void main(String[] args) {
        // 使用构造方法创建 Dog 对象
        Dog myDog = new Dog("Golden Retriever", 3, "Yellow");

        // 调用方法
        myDog.bark();
        myDog.sleep();
        myDog.play();

        System.out.println("My dog is a " + myDog.breed + " and its color is " + myDog.color + ".");
    }
}

2.1.4. 封装

封装是一种将数据和操作数据的方法捆绑在一起的技术。为了实现封装,可以使用访问修饰符限制对类成员的访问。Java 提供了四种访问修饰符:publicprotectedprivate 和默认(无修饰符)。

通常,类的成员变量设置为 private,并通过公共的 getter 和 setter 方法访问和修改它们。

示例4:封装

    // 私有成员变量
    private String breed;
    private int age;
    private String color;

    // 构造方法
    Dog(String breed, int age, String color) {
        this.breed = breed;
        this.age = age;
        this.color = color;
    }

    // 公共 getter 和 setter 方法
    public String getBreed() {
        return breed;
    }

    public void setBreed(String breed) {
        this.breed = breed;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getColor() {
        return color;
    }

    public void setColor(String color) {
        this.color = color;
    }

    // 成员方法
    void bark() {
        System.out.println("Woof!");
    }

    void sleep() {
        System.out.println("Zzz...");
    }

    void play() {
        System.out.println("Playing...");
    }
}

class Main {
    public static void main(String[] args) {
        // 使用构造方法创建 Dog 对象
        Dog myDog = new Dog("Golden Retriever", 3, "Yellow");

        // 使用 setter 方法设置属性
        myDog.setBreed("Labrador");
        myDog.setAge(4);
        myDog.setColor("Black");

        // 使用 getter 方法获取属性
        System.out.println("My dog is a " + myDog.getBreed() + " and its color is " + myDog.getColor() + ".");

        // 调用方法
        myDog.bark();
        myDog.sleep();
        myDog.play();
    }
}

通过这些示例,你应该对类和对象有了基本的了解。当然,类和对象在实际编程中的应用远比这里介绍的更复杂。但是,这些基本概念和操作是你开始学习和掌握面向对象编程的基础。

file

file

推荐阅读:

https://mp.weixin.qq.com/s/dV2JzXfgjDdCmWRmE0glDA

https://mp.weixin.qq.com/s/an83QZOWXHqll3SGPYTL5g

标签:String,对象,void,breed,color,2.1,age,myDog
From: https://www.cnblogs.com/yaoqian/p/17441136.html

相关文章

  • 十、JUC-Java对象内存布局和对象头
    零、问题Objectobject=newObject()谈谈你对这句话的理解?一般而言JDK8按照默认情况下,new一个对象占多少内存空间?位置所在:JVM里堆→新生区→伊甸园区一、对象的内存布局在HotSpot虚拟机里,对象在堆内存中的存储布局可以划分为三个部分:对象头、实例数据、对齐填充(保证8......
  • 函数的对象和装饰器概念
    名称空间的作用域名称空间作用域:变量能够作用的范围1.内置的名称空间在程序的任何阶段任何位置都可以使用(全局有效)2.全局的名称空间在程序的任何阶段任何位置都可以使用(全局有效)3.局部的名称空间在函数内部有效(局部有效) global和nonlocal关键字的......
  • 面向对象设计领域中的参数多态,包含多态,过载多态和强制多态
    参数多态参数多态是指在面向对象编程中,方法的参数可以接受不同类型的对象,并根据实际传递的对象类型来执行不同的操作。它是多态的一种应用形式,通过参数的多态性,可以实现灵活的代码设计和重用。使用场景:当方法需要操作的对象类型不确定时,可以使用多态来接受不同类型的对象,减少......
  • MyBatis源码之getMapper获取代理对象
    MyBatis源码之getMapper获取代理对象下面这句话意思非常明了,就是通过传入接口类型对象,获取接口代理对象。IUserDaouserDao1=sqlSession1.getMapper(IUserDao.class);具体的过程如下:一、首先,调用SqlSession的实现类DefaultSqlSession的getMapper方法,其实是在该方法内调用con......
  • 用户交互Scanner对象
    用户交互Scanner对象next():一定要读取到有效字符后才可以结束输入。对输入有效字符之前遇到的空白,next()方法会自动将其去掉。只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符。next()不能得到带有空格的字符串。nextLine():以Enter(回车)为结......
  • 【C#/.NET】使用ASP.NET Core对象池
    NugetMicrosoft.Extensions.ObjectPool 使用对象池的好处减少初始化/资源分配,提高性能。这一条与线程池同理,有些对象的初始化或资源分配耗时长,复用这些对象减少初始化和资源分配。比如:我有一个执行耗时约500毫秒,内存空间2KB的任务为此创建一个新线程异步执行,而创建线程耗......
  • Golang GIN 接收结构体切片(前端对象数组)
    想接收前端这样的数据格式:【json数组】[{"password":"casso","mobile":"13456789999","nick_name":"go","icon":"地址"},{"passwor......
  • 类与对象的一些掌握事项
    packagecom.ST;publicclassTest1{//类与对象的一些掌握事项//1.类名建议用英文单词,首字母大写,满足驼峰模式,且要有意义//2.类中定义的变量也称为成员变量(对象的属性),类中定义的方法也称为成员方法(对象发行为)//3.成员变量本身存在默认值,同学们定义成员变......
  • 多个变量指向同一个数组对象
    packagecom.karl1;publicclassArrayDemo4{publicstaticvoidmain(String[]args){//多个变量指向同一个数组对象的形式int[]arr1={11,22,33};//把int类型的数组变量arr1赋值给int类型的数组变量arr2int[]arr2=arr1;......
  • elasticsearch-7.12.1集群设置账号密码(亲测可用)
    ES7.7以后的版本将安全认证功能免费开放了。并将X-pack插件集成了到了开源的ElasticSearch版本中。1.在集群的“主节点”上生成证书切换到elastsearch的目录下,使用下列命令生成证书bin/elasticsearch-certutilcert-outconfig/elastic-certificates.p12-pass""2.将生成......