java对于类和对象知识点的总结

首先来说,一个类就相当于是对一个人来进行描述,这个人可以有眼睛,鼻子,嘴巴,类名是class关键字来进行修饰的,

首先,类中的成员变量和方法分为两种:一种是普通的(也叫非静态的),一种是静态的。

上述代码就是定义了一个类,这个类中可以有成员变量,成员变量就相当于对一个人的属性进行抽象:名字,身高,年龄都可以在成员属性(字段)来进行描述,我们把定义在类的内部,方法的外部的字段称为成员变量,是对一个人的属性进行抽象的描述,为什么说是抽象的描述,因为只是定义了这个人有名字,年龄,而没有说这个人具体的年龄是多少。

实例化一个对象:首先定义是通过关键字new来实例化一个对象,如上述代码,在实例化一个对象 的时候就在堆内存中开辟了一块新的空间,来存储这个对象的具体属性,给我们的对象进行赋值,是通过引用.成员变量的方式来赋值,就好比这个人有了一个名字,有了年龄等等,,然后通过这个引用.成员方法的方式来调用成员方法,就好比赋予这个人某种行为。

成员方法:然后再来介绍一下成员方法,一个人可以吃饭,睡觉等等好多行为,然后在类中描述一个行为,我们把它称为普通成员方法。

成员方法可以分为普通成员方法和静态成员方法,静态的成员方法的定义就是用static关键字来标识的,普通的成员方法是属于对象的,就像一个人的年龄有多大,这个属性是属于这个人的,而静态的成员方法是属于一个类的,它是不依赖于对象的,所以在实例化一个对象的时候,我们可以通过对象名.方法的方式去访问普通成员方法,而访问静态的成员方法我们最好用类名.方法的方式去访问。这就更体现出了一个类中的静态方法是属于类的。

普通成员方法和静态成员方法的区别:普通的成员变量内存是在堆上的,静态的成员变量/方法是在方法去的,而且只有一份,静态的方法中是不依赖于对象的,所以在静态的方法中是不能使用普通成员变量的,因为普通成员变量是属于对象的,而静态方法是不依赖于对象的。

  • this关键字:首先this关键字 有3种用法,它代表的是当前对象的引用。首先如果实例化多个对象之后,再去调用成员方法的时候,如上述代码所示,在调用sing方法的时候,你这个方法怎么知道我调用的是张三的sing还是李四的sing,然后在输出这个name+正在唱歌的时候,你怎么输出是谁的name,所以这就用到了this关键字,它代表的是当前对象的引用,也就是说,在这个方法的里有一个隐藏的参数this,“.”的前边是哪一个对象调用了我的方法,这个this就代表了谁,这样才可以在输出名字的时候知道是哪一个对象调用了我的方法。这是第一种用法,就是访问方法,第二种用法就是访问成员变量,

如上述代码所示,这个就是访问成员变量,当我的方法把一个隐藏的参数传进来之后,我的 属性就代表了是当前对象的属性,所以我们要习惯使用this关键字。

第三种用法就是访问构造方法,这就又说道了什么是构造方法,首先它的定义是方法名和类名是一样的,参数可以传一个或者多个,没有返回值,写成void也不可以。它是由编译器自动调用的,并且在整个对象的生命周期只有一次。-它的作用就是在进行对象的实例化之后调用的,进行成员变量的赋值如果没有构造方法,编译器会自动给你加上一个不带参数的构造方法,为什么,因为你的new()里也是没有参数的,构造方法的特点就是你new()给我传过来几个参数,我就去找几个参数的构造方法,那么我们怎么去验证呢,

如上述代码所示,现在我们就验证了,在构造方法要打印dwfdewf,在我们实例化一个对象的时候,我们就清楚了,每实例化一个对象,就会调用一次构造方法,所以这个new(),,,这句代码的意思就是调用我们的构造方法,当我们没写构造方法的时候,实例化一个对象就只能通过引用.变量的方式进行实例化,当我们在类中写了构造方法的时候,就可以在()中对我们的属性进行赋值,如上述代码所示,这就是初识构造方法。所以构造方法就是用来构造对象的,当构造方法走完之后,这个对象就构造完成了。

当我们自己写了构造方法之后,编译器就不会在为我们提供任何形式的构造方法了。所以构造方法一定会被调用的。

回到this关键字,当我们在构造方法中进行赋值的时候,我们不能写这样的代码比如:name = name ,这是个什么意思,形参给形参进行赋值吗?还是什么,估计我们自己都看不懂时啥意思,所以对于编译器也是一样的,也看不懂这是进行了一个什么操作,这个时候我们就要加上this关键字,如上述代码所示,这就说明了意思是把当前对象的名字传过来,然后进行赋值,谁调用了这个构造方法,是当前对象调用的,所以this就代表了当前对象,这就是this关键字的第三种用法。

对构造方法的理解

首先来说,构造方法是一个特殊的类中的方法,构造方法的定义是和类名一样,没有返回值(这个返回值写成void也不可以),对于参数没有任何的要求。当我们在实例化一个对象的时候,通过new()

的方式实例化一个对象,当进行new这个动作的时候,其实就调用了构造方法,但是构造方法在哪里??就在类中,当我们没写任何的构造方法额时候,编译器会默认的提供一个不带参数的构造方法,(看如下两张图对比),而且构造方法只调用一次。

那他有什么作用的,构造方法(也叫构造器)的作用就是帮我们进行对类中的成员变量进行初始化,当我们在类中定义了成员变量时,这个时候还没有进行显示的初始化(只是开辟了一块空间,然后如果是字符串,这个里面存放的就是"\u0000",整形存放的就是0,float类型和double类型就是存放的是0.0,Boolean类型存放的就是false),当实例化对象并且给成员赋值时,才会存放上相应的变量,所以实例化对象这一行代码的意思就是调用类中的构造器来给成员变量进行初始化,new()中没有参数,就会调用不带参数的构造方法,当我们给new()中写参数的时候,就不会调用不带参数的构造器了,就需要在类中重载(方法名一样,参数列表不一样,返回值不做要求)一个构造器,如下图,来对我们的普通成员变量进行初始化。

注:

1.当我们写了构造方法的时候,编译器就不再为我们提供任何的构造方法,会调用我们的构造。

2.构造方法只执行一次。

3.执行顺序:静态代码块(只执行一次)>实例代码块>构造方法

4.构造方法一定会被执行

封装

首先封装就是在类中设置一些权限,对类的内部一些细节实现隐藏,将不想让别人看到的代码进行隐藏,提供get和set接口来进行数据与数据之间的操作,进而达到封装的目的。举个例子:

如上所示:name的权限已经被改成了private,也就是说只有在当前类中可以使用,下面Text类中去给name赋值是无法做到的,这个时候就需要我们设置一些接口来在类外对name进行操作,设置get和set方法来进行对类中的name进行操作,如下图:

这就达到了封装的目的。

包就像是一个文件夹,在Java中也是一样的,最大的是一个项目,项目里有一个一个的文件夹,文件夹内存放我们的包,在包里我们可以新建类,接口等等,简单的说一个java文件就是一个类。

如果是当前包中,最上方会显示一个package,如果是导入的是其他包中的类,上面就会显示import...

如上图所示,demo1中有Text类,就会显示package demo1 ,下面要录入一个字符串,就会从其他包中导入别的类,就会显示是import...

代码块

首先介绍一下什么是代码块:一个{}中包含的就是一个代码块,代码块可以分为:静态代码块,实例代码块(构造块或者非静态代码块)。

{int a = 10;

} 这就是一个普通代码块,用的不多,有时候只是为了区分局部变量的,出了代码块这个局部变量的生命周期就结束,还有就是局部变量必须进行初始化(语法规定的)

static { //静态代码块 } 这个是静态代码块,用static关键字来修饰,一般用来在类加载的时候就执行了,并且只会执行一次,而且是在最开始的时候执行,一般用来放类中需要初始化好的一些信息。

执行的顺序:静态代码块(只执行一次)> 实例代码块 > 构造方法

就先分享到这里,还有最后一些内部类的知识,后面更新,感谢关注。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

良月初十♧

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值