java类和对象定义语法规范

学习java的时候,类和对象是两个重要的知识点,他们互相独自存在又互相作用以及密不可分。这篇博客主要总结一下类的语法以及规范。

类是什么?

首先,java是一门面向对象的语言,而类是对一个对象(实体)进行描述的,主要描述这个对象(实体)有什么属性,有什么功能,然后通过实例化对象来也就是将一个类进行初始化来形成一个具体对象来用。

类的定义格式

简单来说,在java中运用class关键字来修饰,是类。

定义类的时候有几个规范:

1,类名要用大驼峰命名(也就是单词的首字母大写,例如student类名变成大驼峰就是Student)

2,类的类型只有两个修饰符:public和defult(通常class前面不加修饰符就默认为defult)(下面有具体介绍)。

3.,一个java文件必须只有一个public class类文件,且该类文件名和类名要一致,所以一个java文件只可以有一个public class类文件和多个defult(也可以不写)class文件,如图:

类成员的定义和初始化

 类成员包括:成员变量和成员方法。

在了解修饰符(访问限定符)之前,需要简单了解一下包是什么:

包其实就是文件夹,一个文件夹里面的2个java文件也就是2个不同的类,在同一个文件夹里面的类就叫做同一个包下的类。比如有两个文件夹A和B,也就是两个包A和B,在A包下的a类和b类叫做同一个包下的类,在B下的c类和d类叫做同一个包下的类,在A包和B包之间的类叫做不同包的类,在A包下的类和B包下的类可以同名,因为在不同的包。在A包的a类下可以有子类x,b类下可以有子类y,那么我们可以叫x和y是在同一个包下不同的子类,以下图解:

打开IDEA后可以就看到:

 

 注意,这里强调在不同包下的类和同一个包下的类和子类是为了说明下面修饰符所修饰的成员和方法的调用范围,并不是这些包下的类可以互相调用不同包下的类。

这里要介绍一下修饰符(访问限制符)的概念,上面有简单提到。

注意:修饰类只能用public和defult,protected和private不能修饰类,下面四个都可以修饰类里面的方法和成员变量。

修饰符是修饰变量或者方法或者类前面加的符号,主要包括

1;public

2;protected

3;defult

4;private

接下来分开介绍其范围:

public:作用范围最广,是公开的,包括可以访问不同包的非子类,不同包的子类,同一个包的不同类以及同一个包同一个类里面的成员等等,总之什么地方都可以使用public修饰的变量或者方法(前提是没有statci,final等修饰)

protected:作用范围是可以访问不同包之间的子类,同一个包的不同类同一个包的同一个类的成员可以访问,比public少一个不同包的非子类。

defult:作用范围是同一个包的不同类的成员,同一个包的同一个类的成员。

private:最局限,修饰过后的类只能访问是同一个包里面的同一个类的成员。

介绍完以上的修饰符后就可以知道类里面的成员和方法加上修饰符后的成员和方法的作用范围在哪。

类的实例化(对象的实例化)

通过在main函数里面进行new关键字进行实例化对象:

先是定义一个Student类:

然后再main函数里面进行实例化 

通过" ."来进行访问对象里面的成员a,访问方法是也是A.func()就行。

这里要介绍一下static修饰的变量:

static名为静态的,即修饰时加上static时成员变量变成静态成员变量,成员方法变成静态方法。

注意,static修饰成员变量和方法在内存上存储在方法区,而我们实例化的对象在堆区,main函数定义的局部变量在栈区:

在未定义静态变量前的Student类下A引用所指向堆区里面开辟的对象,即红色方框部分

开辟了静态成员变量和静态方法后:

 由以上static修饰成员或方法在内存中开辟的位置可以知道,static修饰的成员和方法是与每一个实例化对象分开的,也就是说,静态修饰的成员或方法是属于每一个类本身的。在未实例化对象之前,该静态成员变量和方法就可以调用了,当然,实例化完对象后也同样可以调用。

调用方法:

在实例化某个对象之前,调用某个类里面的静态方法用类名加“ . ”加方法名,调用静态成员变量一样。

在实例化对象之后,有两种调用方法:方法一:调用某个类里面的静态方法和类名可以用实例化对象的名字加“ .”加方法名,调用静态成员一样。方法二:按照未实例化对象的时候调用的方法一致。

注意:一个类只有实例化对象之后才有意义,但是一个类在实例化对象之前可以用类名调用其内部静态成员以及静态方法。也就是说,自定义一个类的时候,里面的静态成员和静态方法可以直接在main函数中调用,但是其普通的成员变量和普通方法不能直接调用,必须要实例化对象后才能调用类里面的普通成员的普通方法。 

所以我们也可以得到另一个结论:在一个类的普通方法和静态方法中,静态方法不需要依靠对象就可以通过类名来调用其静态方法和静态成员变量;普通方法需要依靠对象,需要实例化了一个对象才能调用类里面的普通方法和普通成员变量。

类的构造函数

其实在实例化对象的时候,是需要调用构造函数来初始化类的,如果自己没有定义类的构造函数,那么系统会自动调用构造函数进行初始化,这是我们平常看不见的,而jvm会自动帮我们进行初始化,例如刚刚实例化的Student A的时候new了一个对象Student(),这个时候就是系统自动帮助我们初始化了类(前提是你成员没有赋值,系统自动初始化的值是对应每一个类型的初始值,例如int对应就是0,String对应就是null,boolean对应就是false)。

进行打印后:

所以构造函数对里面的成员变量进行初始化了。

这里实例化对象调用了一个构造函数,就是下面这个系统默认的构造函数,是不显现的。

 

 当然我们也可以自己来创建构造函数,这样系统优先调用的是我们自己创建的构造函数,要注意方法前面不能加void,int等等类型去修饰,只能用public或者不加,然后加上类名,可以在括号里面自己定义传入参数以及方法内部的实现形式,如果自己没写构造函数系统会默认调用初始化构造函数。:

 

  • 36
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 17
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值