必须要get的类和对象知识点

上一篇:数组的定义与使用(附练习题)

一、类和对象的基本概念

类是用于描述同一类型的对象的一个抽象的概念,类中定义了这一类对象所应具有的静态和动态属性。 类可以看成一类对象的模板,对象可以看成该类的一个具体实例。
在这里插入图片描述
1、面向过程:如C语言关注的是过程。(小的问题)
面向对象:如JAVA关注的是对象。C++也是面向对象的语言,go 语言不是。
面向对象分为:找对象、创建对象、适用对象。(问题规模较大的)
OOP:Object-Orirnted-Project 面向对象的语言
OOP语言的三大特征是继承、封装、多态。JAVA属于OOP语言。

2、类和类的实例化

类就是一类对象的统称。相当于高配的结构体,自定义的类型。类相当于一个模板,对象是由模板产生的样本。一个类可以实例化(new)多个对象。

一般一个.java文件当中,只需要建一个类就好。一个类生成一个class文件

3、创建类

// 创建类
 class 类名{      
	   		field;    //成员属性(字段):定义在类的内部,在方法的外部
类体 :      method;  //成员行为:方法
 } 
 // 实例化对象 = new ();

{ }中为类的主体。
类中的元素称为:成员属性。类中的函数称为:成员方法 ;
成员变量分为:实例数据变量,静态数据变量;
成员方法分为:实例成员方法,静态成员方法。

使用如下:

class Person {
    public String name = "盖盖";
    public int age = 10;
    public static int count = 100;

    public void eat() {
               System.out.println("吃饭");
    }
    public void sleep() {
        System.out.println("睡觉");
    }
    public void show() {
        System.out.println("name: "+ name +" age: "+age);
    }

}

public class TestDemo {
    public static void main(String[] args) {
        //实例化一个对象   new
        Person person1 = new Person();
        System.out.println(person1.name);
        System.out.println(person1.age);
	    System.out.println(Person.count);

        }
}

注意:

1)成员变量在类里面,在方法外面;实例成员变量在对象里面; 如name,age;
2)静态的数据成员和方法,只需要通过类名进行访问和调用;如count,访问静态成员通过 类名.静态成员变量;静态的数据成员和方法不依赖于(不属于)对象,属于类。
3)实例成员没有初始化,默认值为对应的0值,引用类型默认为null;
默认值规则:对于简单类型, 默认值为 0.
对于 boolean 类型, 默认值为 false.
对于引用类型(String, Array, 以及自定制类), 默认值为null。
4)访问对象当中的实例成员变量:对象的引用.成员变量;“访问” 既包含读, 也包含写。
5)实例成员方法和之前写的方法不同, 此处不带 static 关键字。

4、类的成员

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

代码块分为:

静态代码块:静态的优先于实例代码块执行,只执行一次
实例代码块:是优先于构造方法执行的。常用来初始化实例数据成员
本地代码块:方法内部 但不常用;
同步代码块:

执行顺序:静态的先执行——》实例的后执行——》构造方法执行 与写的前后顺序无关;静态代码块和静态数据成员与顺序有关。实例也是。

内部类分为:

静态内部类,实例内部类,本地内部类,匿名内部类

*null 在 Java 中为 “空引用”, 表示一个无效的对象. 类似于 C 语言中的空指针. 如果对 null 进行 . 操作就会引发异常。

5、方法 (method)

方法中还有一种特殊的方法称为 构造方法 (construction method) 在实例化对象的时候会被自动调用到的方法, 方法名字和类名相同, 用于对象的初始化

6、static 关键字

a) 修饰属性,Java静态属性和类相关, 和具体的实例无关。换句话说, 同一个类的不同实例共用同一个静态属性;所以可以直接调用静态方法,而无需创建类的实例;
b) 修饰方法,如果在任何方法上应用 static 关键字,此方法称为静态方法。静态方法可以访问静态数据成员,并可以更改静态数据成员的值;
c)静态方法和实例无关, 而是和类相关. 因此在静态方法内,不允许访问实例数据成员,不允许调用实例成员方法,不依赖对象(不能直接访问,可以间接)。

注意事项1:

静态的数据只有一份,且存在于方法区。非静态的数据成员属于堆。

this和super两个关键字不能在静态上下文中使用(this 不是当前对象而是当前对象的引用, super是当前实例父类实例的引用, 也 是和当前实例相关)。

要习惯使用this。 Idea中按住alt+insert,或者自定义快捷键。

曾经写的方法为了简单, 都统一加上了 static. 但实际上一个方法具体要不要带 static, 都需要是情形而定. main 方法为 static 方法

二、给数据成员初始化的方式

1、提供一系列的get set方法

2、构造函数(作用:用来产生对象的)

函数名和类名相同,没有返回值。

3、生成一个对象共有几步?——两步

i)给对象分配内存
ii)调用合适的构造方法 ,构造方法不止一个

4、getter和setter方法

当我们使用 private 来修饰字段的时候, 就无法直接使用这个字段了

注意事项:
getName 即为 getter 方法, 表示获取这个成员的值。
setName 即为 setter 方法, 表示设置这个成员的值。
当set方法的形参名字和类中的成员属性的名字一样的时候,如果不使用this, 相当于自赋值。
this 表示当前实例的引用。
不是所有的字段都一定要提供 setter / getter 方法, 而是要根据实际情况决定提供哪种方法。
在 IDEA 中可以使用 alt + insert (或者 alt + F12) 快速生成 setter / getter 方法。
在 VSCode 中可以使用鼠标右键 菜单 -> 源代码操作 中自动生成 setter / getter 方法。

5、构造方法

构造方法是一种特殊方法, 使用关键字new实例化新对象时会被自动调用, 用于完成初始化操作。

new 执行过程 为对象分配内存空间 调用对象的构造方法语法规则 :

1.方法名称必须与类名称相同
2.构造方法没有返回值类型声明
3.每一个类中一定至少存在一个构造方法(没有明确定义,则系统自动生成一个无参构造)

6、注意事项 :

如果程序没有提供任何的构造方法,那么编译器会默认生成一个不带有参数的构造方法;即默认的不带有参数的构造方法,只有一种情况下才会产生,即什么构造方法都没有。

构造方法可以发生重载,即函数名相同,参数不同(类型个数)返回值不要求

7、this关键字

this表示当前对象引用(注意不是当前对象)。可以借助 this 来访问对象的字段和方法。

this的三种用法:

  1. this.data;//也就是this.成员变量,访问当前类当中的属性
  2. this.func();//也就是this.成员方法,调用本类的其他成员方法。
  3. this();//调用自己的构造方法 ,调用本类其他的构造方法。

必须放在第一行 只能调用一个构造函数,只能在构造方法里面写。

8、如果当前类没有重写object 的toString方法,那么当调用System.out.println()的时候,会默认调用object 的toString方法。

如果当前类重写了object 的toString方法,那么就会调用重写的方法。

想打印可以直接alt+insert找到toString方法

8、匿名对象

匿名只是表示没有名字的对象。没有引用的对象称为匿名对象。匿名对象只能在创建对象时使用。如果一个对象只是用一次, 后面不需要用了, 可以考虑使用匿名对象。


下一篇:JAVA顺序表的实现
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值