面向对象的程序设计中,类能够看做是咱们自定义的数据类型,那么,如何能更加优美,更加高效地定义它就显得尤其重要。
类中的成员有不少,每一部分都是十分关键的,毕竟“面向对象”在Java学习中真的很重要,许许多多的Java开发者定义出来的类等待着咱们去使用,加油!攻克它!java
直接上代码:数组
package com.my.pac02; /** * @author Summerday * @date 2019/11/26 21:40 */ //类名和文件名一致,且包含main方法 public class CatTest{ //程序入口 public static void main(String[] args) { //建立对象 Cat cat = new Cat(); //为对象的属性赋值 cat.name = "sink"; cat.isMale = true; //经过对象调用方法 cat.sleep(); cat.jump(); cat.laughAt("Susan"); System.out.println(cat.isNotMale()); //打印引用变量的值 System.out.println(cat); //建立一个新的引用变量并指向原先的对象 Cat otherCat = cat; System.out.println(otherCat); System.out.println(otherCat.name);//"sink" //将cat和实际对象之间的引用消除 cat = null; } } //定义一个Cat类 class Cat{ //构造方法 Cat() { System.out.println("cat is cute."); } //成员变量 String name; int age; boolean isMale; String color = "Blue"; //方法 void sleep(){ System.out.println(name+"is sleeping---"); } public void jump() { System.out.println(name+"is jumping---"); } public void laughAt(String otherName) { System.out.println(name+"is laughing at "+otherName); } //返回boolean类型的方法 boolean isNotMale() { return !isMale; } }
[修饰符] class 类名 { (零个到多个)构造器... (零个到多个)成员变量(属性)... (零个到多个)方法... }
[修饰符] 类型 成员变量名 [=默认值]; //例如 boolean isMale; String color = "Blue";
[修饰符] 返回值类型 方法名(形参列表) { 零条到多条可执行语句组成的方法体... } //例如 void sleep(){ System.out.println(name+"is sleeping---"); } public void jump() { System.out.println(name+"is jumping---"); } public void laughAt(String otherName) { System.out.println(name+"is laughing at "+otherName); } //返回boolean类型的方法 boolean isNotMale() { return !isMale; }
[修饰符] 构造器名 (形参列表) { (零条到多条可执行语句组成的构造器执行体... } //例如 //构造方法 Cat() { System.out.println("cat is cute."); }
设计类时的具体细节,接下来将会一一展开,还有未涉及到的内部类和代码块部分,以后将会进行学习,暂且从这三个部分展开探究。学习
经过类构造属于该类对象的过程就叫作类的实例化。对象是具体存在的事物,也称做实例,能够调用类中定义的实例变量以及方法。(不考虑static修饰变量的状况下)设计
//使用Cat类建立了Cat类型的对象 //并调用Cat类的构造器,返回Cat的实例,赋值给变量cat Cat cat = new Cat(); //访问cat的实例变量name和isMale,并为他们赋值 cat.name = "sink"; cat.isMale = true; //调用cat的方法 cat.sleep(); cat.jump(); cat.laughAt("Susan"); //输出isNotMale()方法的返回值 System.out.println(cat.isNotMale());
类型 实例名 = new 类型(参数列表);
例如:Cat cat = new Cat();
类.类变量或类.方法
或实例.实例变量或实例.方法
,类变量涉及static关键字,也是暂且放一边,以后继续回顾。类是一种引用数据类型:也就是说,在栈内存里的引用变量并非真正存储对象的成员变量,而是它的引用,实际的成员变量藏在堆内存中,这一点相似于前面提到过的数组类型。并且,能够知道,栈内存中存储的是实际对象在堆内存中的地址值,能够直接打印引用变量cat的值验证。code
//建立对象,并初始化 Cat cat = new Cat();
//访问实例变量 cat.name = "sink"; cat.isMale = true;
Java不容许直接访问堆内存中的对象,只能经过该对象的引用操做该对象。htm
另外,堆内存中的同一个对象能够由栈内存中多个引用变量所指向。例如:对象
//把引用变量cat赋值给另外一个引用变量otherCat Cat otherCat = cat;
这时,cat和otherCat都在栈内存中被建立,且他们都指向了原先cat所指向的那块堆内存,因此他们操做的是同一个实际对象。blog
堆内存的对象没有任何变量指向时,就会在一段时间内做为“垃圾”被Java的垃圾回收机制回收,释放对象所占用的内存区。
因此想让他提早释放,直接给引用变量赋值为null。内存
参考书籍:《疯狂Java讲义》