Java开发——7.类和对象

简介: 类是对象的抽象,对象是类的具体实现。

概述:

类:类是一组相关属性和行为的集合;类就是现实生活的一个事物,事物由属性和行为组成。

对象:对象是一类事物的具体体现。对象是类的一个实例,必然具备该类事物的属性和行为。

类和对象的关系:类是对象的抽象,对象是类的具体实现;类是抽象的,不占内存;对象是具体的,占用存储空间。




类:

类声明的脑图分析:

image.png

属性:属性分为成员变量和局部变量;成员变量是在类中,方法之外定义的变量;局部变量是在方法中声明的变量。

以下字段为成员变量:String name;int age;String sex;以下字段为局部变量:String ID = "202200205";

publicclassStudent {
// 1.定义学生的属性Stringname;
intage;
Stringsex;
// 2.定义学生能实现的方法publicvoidlearning(){
StringID="202200205";
System.out.println(name+",可以好好学习!");
    }
}

常量:用final关键字修饰的变量就是常量!常量一旦赋值是不能改变的,常量通常用全大写定义。

注:如果声明一个变量为常量,就必须在声明结束后直接赋值,否则编译无法通过。



//常量可以自定义但是有些类中,会有自己的常量
final String ID = "202200205";

以Math类,举例查看其中自定义好的常量;

注:Java类中已经定义好的常量一般都是具有特殊含义;所以定义为常量供用户选择;此处的常量由 static final 修饰,则此常量为终极常量,被static定义的常量/方法可以直接由 类名.常量名 调用。

image.png


publicstaticvoidmain(String[] args) {
System.out.println(Math.PI); //方法名.常量名,即可实现输出常量值}


方法/行为:就是在类中定义的一系列操作;

如下在 Student 学生类中定义了 学习和吃饭 的方法,在类中可以定义多个不同名方法;注意:方法名不能和;类名相同,如果方法名和类名相同则为构造方法。


publicclassStudent {
// 1.定义学生的属性Stringname;
intage;
Stringsex;
// 2.定义学生能实现的方法publicvoidlearning(){
StringID="202200205";
System.out.println(name+",可以好好学习!");
    }
publicvoideat(){
System.out.println(name+"吃饭!");
    }
}

构造方法:分为无参构造方法和有参构造方法。

每次新建一个类,系统都会自动给该类生成一个无参的构造方法,供用户调用;但是有参方法需要手动创建;

注:如果自定义了一个有参构造方法的时候,系统则不会给该类再默认生成一个无参的构造方法了,需要手动创建一个无参构造方法。

构造方法的重写

重写:前提,有继承关系。子类继承父类中方法,就是重写;

重写,子类重写父类中的方法,要求子类重写父类的方法的方法名和参数列表必须和父类保持一致。


//自定义一个学生类publicclassStudent {
// 1.定义学生的属性Stringname;
intage;
Stringsex;
// 2.定义学生能实现的方法publicvoidlearning(){
StringID="202200205";
System.out.println(name+",可以好好学习!");
    }
publicvoideat(){
System.out.println(name+"吃饭!");
    }
// 3.无参构造方法publicStudent(){
System.out.println("我是无参构造方法!");
    }
// 4.有参构造方法publicStudent(Stringname,intage){
this.name=name; //此处是直接把传递进来的形参赋值给成员变量this.age=age;
    }
}


//自定义一个学生类的实现类publicclassStudentAchieve {
publicstaticvoidmain(String[] args) {
// 1.使用无参构造方法实例化对象Studentstu1=newStudent();//此处默认调用无参构造方法 stu1.name="张三";
stu1.age=66;
stu1.sex="男";
//2.调用Student类中的方法stu1.learning();
stu1.eat();
// 3.使用有参构造方法实例化对象Studentstu2=newStudent("李四",66);
//4.调用Student类中的方法stu2.learning();
stu2.eat();
    }        
}




对象:

实例对象的脑图分析:

image.png

对象是类的实例化!

注:一个类可以new多个对象,但是每个对象的对象名不同!

上一期讲了Java中的内存分配,所以对于成员变量和局部变量的存储位置,相信大家都有了更加深刻的了解,只要是new出来的对象都存放在堆内存之中。

相关文章
|
5天前
|
Java
【Java】Math、System、RunTime、BigDecimal类常用方法
【Java】Math、System、RunTime、BigDecimal类常用方法
|
3天前
|
人工智能 自然语言处理 Java
Spring AI,Spring团队开发的新组件,Java工程师快来一起体验吧
文章介绍了Spring AI,这是Spring团队开发的新组件,旨在为Java开发者提供易于集成的人工智能API,包括机器学习、自然语言处理和图像识别等功能,并通过实际代码示例展示了如何快速集成和使用这些AI技术。
Spring AI,Spring团队开发的新组件,Java工程师快来一起体验吧
|
3天前
|
安全 Java API
16 个最常用的 Java 实用程序类
【8月更文挑战第16天】
13 1
16 个最常用的 Java 实用程序类
|
5天前
|
缓存 前端开发 Java
【前端学java】复习巩固-Java中的对象比较(15)
【8月更文挑战第11天】Java中的对象比较
15 1
【前端学java】复习巩固-Java中的对象比较(15)
|
1天前
|
SQL Java Apache
实时计算 Flink版操作报错合集之使用parquet时,怎么解决报错:无法访问到java.uti.Arrays$ArrayList类的私有字段
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
|
3天前
|
Java API 开发者
|
4天前
|
Oracle 安全 Java
JDK8到JDK28版本升级的新特性问题之在Java 15及以后的版本中,密封类和密封接口是怎么工作的
JDK8到JDK28版本升级的新特性问题之在Java 15及以后的版本中,密封类和密封接口是怎么工作的
|
5天前
|
设计模式 人工智能 Java
Java 如何使用单例类
Java 如何使用单例类
5 1
|
6天前
|
SQL 存储 Java
完整java开发中JDBC连接数据库代码和步骤
该博客文章详细介绍了使用JDBC连接数据库的完整步骤,包括加载JDBC驱动、提供连接URL、创建数据库连接、执行SQL语句、处理结果以及关闭JDBC对象的过程,并提供了相应的示例代码。
|
2天前
|
存储 设计模式 Java
在 Java 中创建多个对象
【8月更文挑战第17天】
6 0