【JAVA百炼成仙】化神篇 上——面向对象(对象、类)

简介: 【JAVA百炼成仙】化神篇 上——面向对象(对象、类)

🔎这里是JAVA成仙路,关注我学习JAVA不迷路
👍如果对你有帮助,给博主一个免费的点赞以示鼓励
欢迎各位🔎点赞👍评论收藏⭐️

**前言:本章具体介绍了什么是类和对象以及创建方法,整篇文章用人和人类来举例,图解穿插代码案例。

JAVA成仙路从基础开始讲,后续会讲到JAVA高级,中间会穿插面试题和项目实战,希望能给大家带来帮助!**
@[TOC]

对象

用来描述客观事物的一个实体,由一组属性和方法构成

属性

比如一个人,手,脚,眼睛之类的就是属性
创建一个Ren类声明shou jiao yan 这几个属性
public class Ren {
    //属性,这里放了手,脚,眼睛.我这里只是声明了属性还没有赋值
    private String shou;//shou 就是Ren的属性,成员属性,成员变量
    private String jiao;
    private String yan;
    }

方法

方法:即功能,封装了一段逻辑代码。
继续在这个类中,创建一个装的方法,调用这个方法把人拼起来
也就是调用这个方法时,执行它里面的代码
public class Ren {
    //属性,这里放了手,脚,眼睛.我这里只是声明了属性还没有赋值
    private String shou;
    private String jiao;
    private String yan;

    //这里声明一个方法来组装这个人
    public String zhuang() {
        return String.format("由%s和%s和%s拼装成了一个人叫王五", shou, jiao, yan);
    }
    }

类就是一块模板,确定对象将会拥有的特征(属性)和行为(方法)
具有相同属性和方法的一组对象的集合,就是类,类是抽象的。
类 和 对象(实例) 的关系:
Date d = new Date(); d 就是对象,就是类的一个体(实例),java语言中new 就是实例化。
张三 和 人类的关系 张三是对象 人类是类,
人类 zs = new 人类();
继续用上面那个例子,Ren就是人类,实例化一个对象叫王五。

在这里插入图片描述

声明类

类是一种抽象数据类型,在Java中类也被当作一个数据类型来定义。类成员包括数据成员(成员变量)和方法成员(成员方法)。java.lang.Object 此类是java程序类的基类,声明定义的类,会自动继续Object类, java 类是单继承,多实现、

声明一个类的整体结构如下:

这里的继承,抽象,实现看不懂可以略过,下一篇会详细讲,这里只要知道怎么声明类就可以了。
//普通类
public class className {
}
//抽象类
public abstract class className{
}
//类a继承类b
public class a extends b{
}
//类a实现类b
public class a implements b{
}
public 全局
abstract 抽象
class 类
className 类名
extends 继承,如果一个类在编写时,没有继承相关的父类,就自动继承Object类
superClassName 父类名
implements 实现

实例化对象

在这里插入图片描述

还是在这个类,里面多了几个set方法,这几个方法的作用就是用来传值,因为我虽然定义了shou jiao yan 这几个属性,但是并没有真实的值。就就相当于我定义了人类有手脚眼这些属性,但是没有给你具体的眼和手和脚。
public class Ren {
    //属性,这里放了手,脚,眼睛.我这里只是声明了属性还没有赋值
    private String shou;
    private String jiao;
    private String yan;

    //这里声明一个方法来组装这个人
    public String zhuang() {
        return String.format("由%s和%s和%s拼装成了一个人叫王五", shou, jiao, yan);
    }

    //这里声明了set方法来传值
    public void setshou(String id) {
        this.shou = shou;
    }
    public void setjiao(String jiao) {
        this.jiao = jiao;
    }
    public void setyan(String yan) {
        this.yan = yan;
    }
}
接下来创建一个测试类,在这个类中实例化一个人。也就是Ren类的实例化对象,实例化之后调用set方法给他传入具体的值,手,脚,眼。最后执行zhuang()方法把它拼装起来。
public class Test {
    @org.junit.jupiter.api.Test
    public void a() {
        Ren ren = new Ren();
        ren.setjiao("两只脚");
        ren.setshou("两只手");
        ren.setyan("两个眼");
        String rr = ren.zhuang();
        System.out.println(rr);
    }
}

执行结果:
在这里插入图片描述

相关文章
|
8天前
|
存储 Java
Java中判断一个对象是否是空内容
在 Java 中,不同类型的对象其“空内容”的定义和判断方式各异。对于基本数据类型的包装类,空指对象引用为 null;字符串的空包括 null、长度为 0 或仅含空白字符,可通过 length() 和 trim() 判断;集合类通过 isEmpty() 方法检查是否无元素;数组的空则指引用为 null 或长度为 0。
|
8天前
|
安全 Java 编译器
JAVA泛型类的使用(二)
接上一篇继续介绍Java泛型的高级特性。3. **编译时类型检查**:尽管运行时发生类型擦除,编译器会在编译阶段进行严格类型检查,并允许通过`extends`关键字对类型参数进行约束,确保类型安全。4. **桥方法**:为保证多态性,编译器会生成桥方法以处理类型擦除带来的问题。5. **运行时获取泛型信息**:虽然泛型信息在运行时被擦除,但可通过反射机制部分恢复这些信息,例如使用`ParameterizedType`来获取泛型参数的实际类型。
|
8天前
|
安全 Java 编译器
JAVA泛型类的使用(一)
Java 泛型类是 JDK 5.0 引入的重要特性,提供编译时类型安全检测,增强代码可读性和可维护性。通过定义泛型类如 `Box<T>`,允许使用类型参数。其核心原理是类型擦除,即编译时将泛型类型替换为边界类型(通常是 Object),确保与旧版本兼容并优化性能。例如,`Box<T>` 编译后变为 `Box<Object>`,从而实现无缝交互和减少内存开销。
|
26天前
|
安全 Java
Object取值转java对象
通过本文的介绍,我们了解了几种将 `Object`类型转换为Java对象的方法,包括强制类型转换、使用 `instanceof`检查类型和泛型方法等。此外,还探讨了在集合、反射和序列化等常见场景中的应用。掌握这些方法和技巧,有助于编写更健壮和类型安全的Java代码。
39 17
|
27天前
|
Java
Java快速入门之类、对象、方法
本文简要介绍了Java快速入门中的类、对象和方法。首先,解释了类和对象的概念,类是对象的抽象,对象是类的具体实例。接着,阐述了类的定义和组成,包括属性和行为,并展示了如何创建和使用对象。然后,讨论了成员变量与局部变量的区别,强调了封装的重要性,通过`private`关键字隐藏数据并提供`get/set`方法访问。最后,介绍了构造方法的定义和重载,以及标准类的制作规范,帮助初学者理解如何构建完整的Java类。
|
1月前
|
Java
java代码优化:判断内聚到实体对象中和构造上下文对象传递参数
通过两个常见的java后端实例场景探讨代码优化,代码不是优化出来的,而是设计出来的,我们永远不可能有专门的时间去做代码优化,优化和设计在平时
33 15
|
2月前
|
JSON Java Apache
Java基础-常用API-Object类
继承是面向对象编程的重要特性,允许从已有类派生新类。Java采用单继承机制,默认所有类继承自Object类。Object类提供了多个常用方法,如`clone()`用于复制对象,`equals()`判断对象是否相等,`hashCode()`计算哈希码,`toString()`返回对象的字符串表示,`wait()`、`notify()`和`notifyAll()`用于线程同步,`finalize()`在对象被垃圾回收时调用。掌握这些方法有助于更好地理解和使用Java中的对象行为。
|
2月前
|
Java
java中面向过程和面向对象区别?
java中面向过程和面向对象区别?
37 1
|
3月前
|
存储 缓存 安全
java 中操作字符串都有哪些类,它们之间有什么区别
Java中操作字符串的类主要有String、StringBuilder和StringBuffer。String是不可变的,每次操作都会生成新对象;StringBuilder和StringBuffer都是可变的,但StringBuilder是非线程安全的,而StringBuffer是线程安全的,因此性能略低。
104 8
|
3月前
|
Java 开发者
在 Java 中,一个类可以实现多个接口吗?
这是 Java 面向对象编程的一个重要特性,它提供了极大的灵活性和扩展性。
201 58

热门文章

最新文章