温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Java类和对象的示例分析

发布时间:2022-03-23 14:04:25 来源:亿速云 阅读:122 作者:小新 栏目:开发技术

这篇文章给大家分享的是有关Java类和对象的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

一、什么是类

类(Class)是面向对象程序设计(OOP,Object-Oriented Programming)实现信息封装的基础。类是一种用户自定义的引用数据类型,也称类类型。每个类包含数据说明和一组操作数据或传递消息的函数,类的实例称为对象

类的实质是一种引用数据类型,类似于 byte,short,int,char,long, float, double等基本数据类型,不同的是它是一种复杂的数据类型。因为它的本质是数据类型,而不是数据,所以不存在于内存中,不能被直接操作,只有被实例化为对象时,才会变得可操作。

二、Java的类和C语言的结构体异同

我们可以发现Java中的类其实和C语言中的结构体很像,那么他们有什么区别呢?

1.打包的对象不同

C 语言的结构体是对数据的打包。把一堆概念上相互关联的数据打包到一起,方便整体处理。外界可以随意读写这些数据

Java的对象可以是对数据的打包,也可以是对职责的打包

2. 存放的位置不同

C 语言的结构体可以存放在栈上,也可以存在堆上

Java的对象只能存在堆上

三、类和类的实例化

类的成员可以包含以下:字段、方法、代码块、内部类和接口等

可以形象的理解为类是一个模板,类的实例化就是通过这个模板来创建对象(一个模板可以创建无数的对象)

声明一个类其实就相当于是在自定义一种新的类型,引用类型

类的声明

基本形式:

class 类名 {
字段(成员变量/属性);
方法(成员方法);
}

这里的 class 就是类的关键字

类中的元素:属性(在类里面,方法的外面)

类中的方法:成员方法

如下示例:

public class Dog {
    public String name;
    public int age;
    public void bark() {
        System.out.println("汪汪");
    }
}

通过以上代码这就创建了一个狗这个类,有姓名和年龄两个属性,行为就是叫

属性前面的public是访问修饰符

成员方法前面不加 static

实例化的对象,成员遵循默认值规则

默认值规则:0 的变形

特殊的:

引用类型:null         

boolean:false     

char:'\u0000' (空字符)

类的实例化

class Dog {
    public String name;
    public int age;
    public boolean are;
    public static int a;
    public void bark() {
        System.out.println("汪汪");
    }
}
 
public class Practice {
    public static void main(String[] args) {
        Dog dog = new Dog();   // 实例化一个对象
        System.out.println(dog.are);   // 通过.来访问
    }
}

这里通过new来实例化一个对象,通过对象的引用 . 成员变量来访问成员变量,普通方法通过对象的引用 . 方法名来调用

静态属性(静态成员变量)

被定义在类的内部,方法的外部,加static修饰

如下代码:

class Dog {
    public String name;
    public int age;
    public boolean are;
    public static int a;    // 静态属性
    public void bark() {
        System.out.println("汪汪");
    }
}

注意: 静态属性仍然遵循默认值规则

如何访问:

需要知道静态成员变量并不属于对象,而是属于类,所以我们不能通过对象的引用 . 成员变量去访问,而是 类名 . 静态属性 去访问,静态方法通过类名来访问

如下:

System.out.println(Dog.a);

错误示例:

System.out.println(dog.a);

访问类的静态属性不需要有对象,直接就可以访问

注意:

  • 静态属性存在于方法区

  • 不管new多少个对象,静态属性只有一份

  • 静态方法内部不能够访问非静态的数据成员的值,也不能调用非静态方法

  • 静态方法不依赖对象

四、构造方法

首先我们想想,一个对象时如何产生的?

  • 为对象分配内存

  • 调用合适的构造方法

在我们使用new来实例化对象时,构造方法会被自动调用,完成初始化操作

创建构造方法

  • 方法名必须和类名相同

  • 无返回值类型声明

  • 每个类至少存在一个构造方法(没有定义时,系统自动生成一个无参构造)

如下代码:

class Dog {
    public String name;
    public int age;
    public boolean are;
    public static int a;
    public Dog() {
 
    }
    public Dog(String name) {
        this.name = name;
    }
    public void bark() {
        System.out.println("汪汪");
    }
}
 
public class Practice {
    public static void main(String[] args) {
        Dog dog = new Dog("旺财");
        System.out.println(dog.name);
    }
}

在这段代码中有Dog这个类,里面共有两个构造方法,一个无参构造,一个有参构造,在通过new创建对象时,使用了有参构造,可以看到打印出来的结果

Java类和对象的示例分析

所以其实也就能看出来,到底调用哪个构造方法,取决于new时传的参数

需要注意:

  • 当类中没有构造方法的时候,系统会自动补一个无参构造方法,但是当你自己写了构造方法的时候,就不会补这个无参构造,若需要用无参构造,就需要自己手动写

  • 构造方法也支持重载

this

this的作用

在很多情况下,可能都会有人误以为 this 是当前对象,但其实 this 是当前对象的引用

为什么this不是对象,而是引用:

我们要知道,构造方法是用来创建对象的,那么在调用构造方法创建对象的过程中,这个对象还是不存在的,哪来的对象之说

因此我们可以通过this去访问属性、成员方法、构造方法(调用构造方法时,只能放在第一行,只能在构造方法里面写,只能用一次)

感谢各位的阅读!关于“Java类和对象的示例分析”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI