这篇文章主要给大家介绍了关于JavaΦ类的定义的概念与实例化的相关资料文中通过示例代码介绍的非常详细,对大家学习或者使用Java具有一定的参考学习价值需要的朋友們下面来一起学习学习吧
面向对象的程序设计中,类可以看作是我们自定义的概念的数据类型那么,如何能更加优美更加高效地定义嘚概念它就显得尤为重要。
类中的成员有很多每一部分都是十分关键的,毕竟“面向对象”在Java学习中真的很重要许许多多的Java开发者定義的概念出来的类等待着我们去使用,加油!攻克它!
//类名和文件名一致且包含main方法
//创建一个新的引用变量并指向原先的对象
//将cat和实际對象之间的引用消除
对于顶级类(外部类)来说,只有两种修饰符:public和默认(default)因为外部类的上一单元是包,所以外部类只有两个作用域:同包任何位置。因此只需要两种控制权限:包控制权限和公开访问权限,也就对应两种控制修饰符:public和默认(default)
如果类使用了private修饰符,说明昰个内部类内部类的上一级是外部类,那么对应的有四种访问控制修饰符:本类(private)同包(default),父子类(protected)任何位置(public)。当一个内部类使用了private修饰後只能在该类的外部类内部使用。
上面这些都是平时使用司空见惯的但是为什么是这种情况呢?
可以想一下一个java项目是不可能在一個class里面完成的。mvc模式中是把类分为三层,一层层调用类如果定义的概念为私有的和受保护的就无法调用。换句话说对于一个java文件,偠么就是自己单独运行要么就是被其他程序作为库调用,如果一个java文件的类被private修饰那么是不是其他的程序或是类是无法使用它的,那麼他作为一个单独的文件就没啥用了如果它作为单个文件运行,类加载怎么找到它呢因为它对外不可见。同时也失去了类的存在意義。因此类只有public和默认修饰符。
类名命名规范:要见名知义意思是需要多个有意义的英文单词组成,每个单词首字母大写规范这种東西,建议遵守!养成好习惯
上面三种成员(构造器,成员变量方法)都可以定义的概念零个或多个,但是都是零个就变成了空类沒啥意义。
成员变量包括实例变量和类变量static修饰的成员变量称作类变量,关于static之后再细讲
[修饰符] 返回值類型 方法名(形参列表)
零条到多条可执行语句组成的方法体...
[修饰符] 构造器名 (形参列表)
(零条到多条可执行语句组成的构造器执行体...
- 構造器用于构造类的实例,也就是创建某个类的对象时会自动调用构造方法之后会讨论。
- 构造器名一定要和类名相同!
- 没有定义的概念構造器的话系统会提供默认的构造器。
设计类时的具体细节接下来将会一一展开,还有未涉及到的内部类和代码块部分之后将会进荇学习,暂且从这三个部分展开探究
通过类构造属于该类对象的过程就叫做类的实例化。对象是具体存在的事物也称作实例,可以调鼡类中定义的概念的实例变量以及方法(不考虑static修饰变量的情况下)
//使用Cat类创建了Cat类型的对象
//并调用Cat类的构造器,返回Cat的实例赋值给變量cat
- 如果访问权限允许的情况下(访问权限涉及到private等关键字,暂且不谈)类中定义的概念的方法和成员变量都可以通过类或实例来调用。
- 调用类成员变量或方法:类.类变量或类.方法或实例.实例变量或实例.方法类变量涉及static关键字,也是暂且放一边之后继续回顾。
可以这麼理解:定义的概念类就是为了创建许许多多该类的实例这些实例具有相同的特征。
创建对象的过程在内存中的表现
类是一种引用数据類型:也就是说在栈内存里的引用变量并不是真正存储对象的成员变量,而是它的引用实际的成员变量藏在堆内存中,这一点类似于湔面提到过的数组类型而且,可以知道栈内存中存储的是实际对象在堆内存中的地址值,可以直接打印引用变量cat的值验证
Java不允许直接访问堆内存中的对象只能通过该对象的引用操作该对象。
另外堆内存中的同一个对象可以由栈内存中多个引用變量所指向。例如:
//把引用变量cat赋值给另一个引用变量otherCat
这时cat和otherCat都在栈内存中被创建,且他们都指向了原先cat所指向的那块堆内存所以他們操作的是同一个实际对象。
堆内存的对象没有任何变量指向时就会在一段时间内作为“垃圾”被Java的垃圾回收机制回收,释放对象所占鼡的内存区
所以想让他提前释放,直接给引用变量赋值为null
参考书籍:《疯狂Java讲义》
以上就是这篇文章的全部内容了,希望本文的内容對大家的学习或者工作具有一定的参考学习价值谢谢大家对脚本之家的支持。