构造器也叫构造方法(constructor),用于对象的初始化
既可以称为构造器也可以称为构造方法,本质上还是一个方法。所以方法的特性全部适用于构造器里面
要点:
-
通过new关键字调用!!
-
构造器有返回值,但是不能定义返回值类型(返回值的类型肯定是本类)
-
不能在构造器里使用return返回某个值!!!
-
如果没有定义构造器,则编译器回自动定义一个无参的构造函数。如果已定义则编译器不会自动添加
-
构造器的方法名必须和类名一致!
/**
* 创建类
* @author Lucifer
*/
public class Student {
/*一个学生类应该包含这三个属性
1.id
2.name
3.age
这样的话根据这个类创建的对象都会包含这些属性---成员变量的作用域
对象里面可以包含方法---光有属性没有方法被称之为结构体
方法用于定义该类或该类实例的行为特征和功能实现
*/
int id;
String name;
int age;
Computer comp; //计算机对象,这个对象还没有值(或者是默认的值)
/*
现在定义他的方法:
1.学习
2.玩游戏
*/
void study(){
System.out.println("Good Good Study,Day Day Up" + comp.brand); //comp是我们的对象,通过'.'操作符去访问这个对象相关的属性
return;
}
void play(){
System.out.println("I am play game");
}
/*
一个简单的类包含了:
1.成员变量---属性
2.方法
这样就定义好了一张图纸,但是没有对象。
main方法是程序执行的入口(主线程)可以放在这个类里面也可以放在别的类里面,都可以。
*/
/*
构造方法:用于创建这个类的对象,无参的构造方法可以由系统自动创建。
相当于构造器,调用他是用new去调用
*/
Student(){
}
public static void main(String args[]){
Student stu = new Student();
System.out.println(stu); //打印出对象在堆内对应的地址,这个地址不是一定的而是变化的
//当输入:stu(对象名)+'.'的时候就会出现前面定义的属性和方法---涉及到继承的概念
stu.id=(1001);
stu.name="Lucifer";
stu.age=18;
// stu.play(); //调用play
Computer c1 = new Computer(); //建好了一个Computer对象
System.out.println(c1); //打印出对象在堆内对应的地址
c1.brand = "MacOs"; //给这个对象下面的属性赋值
/*
把这个建好的对象给stu的comp属性
*/
stu.comp = c1; //这样就把建好的对象的值给了stu的comp属性
//现在去调用play方法和study方法
stu.play();
stu.study();
}
}
class Computer{
/*
类和类之间也是可以互相引用和嵌套的
*/
String brand; //这个类里面的一个变量:brand品牌。相当于类下面的一个属性
}
/*
public是访问修饰符
class是类
Student是类名
根据类的模板去创建相关的对象
一个类当中通常有两个东西:
1.属性(field):通常用来表示静态的特征,有时候属性也被称之为:成员变量
2.方法:
*/