Java——类与对象

简介: 这段内容介绍了Java中的类和对象、`this`关键字及构造方法的基本概念。类是对现实世界事物的抽象描述,包含属性和方法;对象是类的实例,通过`new`关键字创建。`this`关键字用于区分成员变量和局部变量,构造方法用于初始化对象。此外,还介绍了标准JavaBean的要求和生成方法。

类和对象


在Java中,类是对现实世界中某一类事物的抽象描述。它包含了该类事物的属性和方法。属性用于描述事物的状态,而方法则用于描述事物可以做的事情。对象也就时类的实例,通过关键字new出来一个具体的对象。

举个例子吧:

public class Student {
    //成员变量,也就是Student类包括的属性
    public String sno;
    public String name;
    public String gender;
    public int age;
    public int score;
    //成员方法
    public static void printName(String name){
        System.out.println(name);
    }
    //测试
    public static void main(String[] args) {
        Student s1 = new Student();
        s1.name = "张三";
        printName(s1.name);
    }
}

其实类和C语言中的结构体差不多,当我们在主函数中创建一个类的对象时,是通过 new 关键字来实现的,然后通过对象名 + . 来获取属性

注意事项:
1.类名首字母要大写,见名知意,驼峰模式,也就是多个单词组成一个单词,每个单词首字母大写
2.一个Java文件可以定义多个class类,但用public修饰的类名要和文件名一致

3.建议一个类一个java文件

this 关键字

如果说我们想要在Student类中写一个setName的方法,但是我们定义变量名要采用见名知意的方法,那么此时我们再用name,就和之前定义的属性name冲突了,就会产生以下的矛盾,因为此时name在方法体内,变成了局部变量,根据局部优先的原则,此时就是两个空值在互相赋值

public void setName(String name) {
        name = name;
    }

那么怎么解决呢?通过this关键字就可以区分成员变量和局部变量

private String name;
    private int age;
    private String sex;
    
    public void printAge(int age){
        age = 10;
        System.out.println(age);//局部变量,输出10
        System.out.println(this.age);//成员变量,输出0
    }

构造方法

作用:在创建对象的时候给成员变量进行赋值
特点:
1.方法名与类名完全相同
2.没有返回值类型,void 也不用写
3.没有返回值

public class Student {
    private String name;
    private int age;
    private String sex;
    //空参构造
    public Student(){
    }
    //带全部参数的构造方法
    public Student(String name,int age,String sex){
        this.name=name;
        this.age=age;
        this.sex=sex;
    }
    public static void main(String[] args) {
        Student s1 = new Student();//调用空参构造
        Student s2 = new Student("张三",20,"男");//调用构造方法
    }
}

注意:
如果没有定义构造方法,系统将给出一个默认的无参构造方法
如果定义了构造方法,系统就不再默认提供构造方法
推荐:
无论是否使用,都手动书写无参构造方法和带全部参数的构造方法

标准JavaBean

用来描述一类事物的类就叫做JavaBean类,在JavaBean中是不用写main方法的,之前写的编写main方法的类叫做测试类,在测试类中,创建JavaBean的对象进行赋值调用

一个标准的JavaBean要做到以下要求:
1.类名见名知意
2.成员变量用private修饰
3.至少提供两个构造方法(无参,带全部参数)
4.提供每一个成员变量的get,set方法
可以通过alt + insert快捷键来一键生成构造方法和get,set方法


另外还有一个好用到起飞的一键生成标准javabean的插件

装好之后就可以鼠标右键,找到ptg to javabean

以下就是一个标准的JavaBean类

public class Student {
    private String name;
    private int age;
    private String sex;
    //空参构造
    public Student(){
    }
    //带全部参数的构造方法
    public Student(String name,int age,String sex){
        this.name=name;
        this.age=age;
        this.sex=sex;
    }
    public static void main(String[] args) {
        Student s1 = new Student();
        Student s2 = new Student("张三",20,"男");
    }
    public String getName() {
        return name;
    }
    
    public void setName(String name) {
        this.name = name;
    }
    
    public int getAge() {
        return age;
    }
    
    public void setAge(int age) {
        this.age = age;
    }
    
    public String getSex() {
        return sex;
    }
    
    public void setSex(String sex) {
        this.sex = sex;
    }
    public String toString() {
        return "Student{name = " + name + ", age = " + age + ", sex = " + sex + "}";
    }
}

相关文章
|
10天前
|
算法 Java 数据处理
从HashSet到TreeSet,Java集合框架中的Set接口及其实现类以其“不重复性”要求,彻底改变了处理唯一性数据的方式。
从HashSet到TreeSet,Java集合框架中的Set接口及其实现类以其“不重复性”要求,彻底改变了处理唯一性数据的方式。HashSet基于哈希表实现,提供高效的元素操作;TreeSet则通过红黑树实现元素的自然排序,适合需要有序访问的场景。本文通过示例代码详细介绍了两者的特性和应用场景。
30 6
|
4天前
|
Java API
Java 对象释放与 finalize 方法
关于 Java 对象释放的疑惑解答,以及 finalize 方法的相关知识。
31 17
|
2天前
|
Java 数据格式 索引
使用 Java 字节码工具检查类文件完整性的原理是什么
Java字节码工具通过解析和分析类文件的字节码,检查其结构和内容是否符合Java虚拟机规范,确保类文件的完整性和合法性,防止恶意代码或损坏的类文件影响程序运行。
|
2天前
|
Java API Maven
如何使用 Java 字节码工具检查类文件的完整性
本文介绍如何利用Java字节码工具来检测类文件的完整性和有效性,确保类文件未被篡改或损坏,适用于开发和维护阶段的代码质量控制。
|
3天前
|
存储 安全 Java
Java编程中的对象序列化与反序列化
【10月更文挑战第22天】在Java的世界里,对象序列化和反序列化是数据持久化和网络传输的关键技术。本文将带你了解如何在Java中实现对象的序列化与反序列化,并探讨其背后的原理。通过实际代码示例,我们将一步步展示如何将复杂数据结构转换为字节流,以及如何将这些字节流还原为Java对象。文章还将讨论在使用序列化时应注意的安全性问题,以确保你的应用程序既高效又安全。
|
6天前
|
Java
Java的原子变量类
Java的原子变量类
16 8
|
2天前
|
存储 Java 编译器
java wrapper是什么类
【10月更文挑战第16天】
11 3
|
5天前
|
Java 程序员 测试技术
Java|让 JUnit4 测试类自动注入 logger 和被测 Service
本文介绍如何通过自定义 IDEA 的 JUnit4 Test Class 模板,实现生成测试类时自动注入 logger 和被测 Service。
16 5
|
6天前
|
Java 开发者
在Java多线程编程中,创建线程的方法有两种:继承Thread类和实现Runnable接口
【10月更文挑战第20天】在Java多线程编程中,创建线程的方法有两种:继承Thread类和实现Runnable接口。本文揭示了这两种方式的微妙差异和潜在陷阱,帮助你更好地理解和选择适合项目需求的线程创建方式。
11 3
|
8天前
|
存储 SQL 安全
Java零基础-StringBuilder类详解
【10月更文挑战第12天】Java零基础教学篇,手把手实践教学!
16 5