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出来的对象都存放在堆内存之中。

目录
打赏
0
0
0
0
14
分享
相关文章
智慧产科一体化管理平台源码,基于Java,Vue,ElementUI技术开发,二开快捷
智慧产科一体化管理平台覆盖从备孕到产后42天的全流程管理,构建科室协同、医患沟通及智能设备互联平台。通过移动端扫码建卡、自助报道、智能采集数据等手段优化就诊流程,提升孕妇就诊体验,并实现高危孕产妇五色管理和孕妇学校三位一体化管理,全面提升妇幼健康宣教质量。
40 12
Java中判断一个对象是否是空内容
在 Java 中,不同类型的对象其“空内容”的定义和判断方式各异。对于基本数据类型的包装类,空指对象引用为 null;字符串的空包括 null、长度为 0 或仅含空白字符,可通过 length() 和 trim() 判断;集合类通过 isEmpty() 方法检查是否无元素;数组的空则指引用为 null 或长度为 0。
JAVA泛型类的使用(二)
接上一篇继续介绍Java泛型的高级特性。3. **编译时类型检查**:尽管运行时发生类型擦除,编译器会在编译阶段进行严格类型检查,并允许通过`extends`关键字对类型参数进行约束,确保类型安全。4. **桥方法**:为保证多态性,编译器会生成桥方法以处理类型擦除带来的问题。5. **运行时获取泛型信息**:虽然泛型信息在运行时被擦除,但可通过反射机制部分恢复这些信息,例如使用`ParameterizedType`来获取泛型参数的实际类型。
JAVA泛型类的使用(一)
Java 泛型类是 JDK 5.0 引入的重要特性,提供编译时类型安全检测,增强代码可读性和可维护性。通过定义泛型类如 `Box<T>`,允许使用类型参数。其核心原理是类型擦除,即编译时将泛型类型替换为边界类型(通常是 Object),确保与旧版本兼容并优化性能。例如,`Box<T>` 编译后变为 `Box<Object>`,从而实现无缝交互和减少内存开销。
Java快速入门之类、对象、方法
本文简要介绍了Java快速入门中的类、对象和方法。首先,解释了类和对象的概念,类是对象的抽象,对象是类的具体实例。接着,阐述了类的定义和组成,包括属性和行为,并展示了如何创建和使用对象。然后,讨论了成员变量与局部变量的区别,强调了封装的重要性,通过`private`关键字隐藏数据并提供`get/set`方法访问。最后,介绍了构造方法的定义和重载,以及标准类的制作规范,帮助初学者理解如何构建完整的Java类。
|
30天前
|
Object取值转java对象
通过本文的介绍,我们了解了几种将 `Object`类型转换为Java对象的方法,包括强制类型转换、使用 `instanceof`检查类型和泛型方法等。此外,还探讨了在集合、反射和序列化等常见场景中的应用。掌握这些方法和技巧,有助于编写更健壮和类型安全的Java代码。
48 17
菜鸟之路day02-04拼图小游戏开发一一JAVA基础综合项目
本项目基于黑马程序员教程,涵盖面向对象进阶、继承、多态等知识,历时约24小时完成。项目去除了登录和注册模块,专注于单机游戏体验。使用Git进行版本管理,代码托管于Gitee。项目包含窗体搭建、事件监听、图片加载与打乱、交互逻辑实现、菜单功能及美化界面等内容。通过此项目,巩固了Java基础并提升了实际开发能力。 仓库地址:[https://gitee.com/zhang-tenglan/puzzlegame.git](https://gitee.com/zhang-tenglan/puzzlegame.git)
44 6
【潜意识Java】javaee中的SpringBoot在Java 开发中的应用与详细分析
本文介绍了 Spring Boot 的核心概念和使用场景,并通过一个实战项目演示了如何构建一个简单的 RESTful API。
43 5

热门文章

最新文章