类是一种抽象的数据类型,它是对某一事物整体描述/定义,但是不能具体代表某一个具体的事物。对象是抽象概念的具体实例。
类的构造方法
构造方法是一个与类同名的方法,对象的创建就是通过构造方法完成的,构造方法分为有参构造方法和无参构造方法,区别就在于有没有参数。具体如下:
public class Demo01 { public Demo01() { // 定义无参构造方法 System.out.println("无参构造方法"); } public Demo01(String name) { // 定义有参构造方法 System.out.println("有参构造方法"); } }
注意事项:
构造方法是一种特殊的方法。
每个类都有构造方法。如果没有显式地为类定义构造方法,Java 编译器将会为该类提供一个默认构造方法。
在创建一个对象的时候,至少要调用一个构造方法。构造方法的名称必须与类同名,一个类可以有多个构造方法。
没有返回类型,甚至连void也没有。
构造方法的调用是在创建一个对象时使用new操作进行的。构造方法的作用是初始化对象。
不能被static、final、synchronized、abstract和native修饰。构造方法不能被子类继承。
this关键字
this可以访问类中的成员变量,用来区分成员变量和局部变量(重名问题)。语法如下:
this.成员变量名称;
例:
public class Demo02 { public String name; //定义成员变量name; public Demo02() {} public Demo02(String name) { this.name = name; //第一个name指的是成员变量;第二个name指的是参数名称 } }
this可以访问本类中的成员方法。语法如下:
this.方法名;
例:
public class Demo03 { //定义一个方法a public void a(){ System.out.println("hello"); } //定义一个方法b public void b(){ this.a(); //通过this调用方法a } public static void main(String[] args) { Demo03 c = new Demo03(); //创建对象 c.b(); //调用方法b } }
this可以访问本类的构造方法。语法如下:
this();
注意:
例:
public class Demo04 { public String name; public int age; public Demo04() { // 定义无参构造方法 System.out.println("你好"); } public Demo04(String name) { // 定义有参构造方法 this(); //调用本来的无参构造方法 this.name = name; } public Demo04(String name, int age) { this(name); //调用本来的有参构造方法 this.age = age; } public static void main(String[] args){ //调用构造器,得到该类的实例对象 Demo04 s = new Demo04("Tom",20); System.out.println(s.name + s.age); } }
对象是根据类创建的。在Java中,使用关键字 new 来创建一个新的对象。创建对象需要以下三步:
具体语法如下:
Test test = new Test(); Test test = new Test("abc");
实例如下:
public class Demo02 { public String name; public Demo02() {} // 定义无参构造方法 public Demo02(String name) { // 定义有参构造方法 this.name = name; } public static void main(String[] args){ //调用构造器,得到该类的实例对象 Demo02 s = new Demo02("good"); System.out.println(s.name); } }
当用户使用new操作符创建一个对象后,可以使用“对象.类成员”来获取对象的属性和行为。语法如下:
对象.方法名(); //调用方法对象.变量名; //调用变量
代码如下:
public class Demo05 { public int i = 1314; //成员变量,即属性 public String j; public Demo05() {} // 定义无参构造方法 public void say(){ //方法 System.out.print("祝你"); } public static void main(String[] args){ //调用构造器,得到该类的实例对象 Demo05 s = new Demo05(); //创建对象 //调用方法 s.say(); //调用变量 System.out.println(s.i); } }
原理
程序调用构造器时,系统会先为该对象分配内存空间,并为这个对象执行默认初始化,这个对象就产生了。只是此时还不能被外部程序访问。当构造器的执行体执行结束后,这个对象作为构造器的返回值被返回,通常还会赋值给另一个引用类型的变量,从而让外部程序可以访问该对象。