类:
类是什么?类是模板,类是物以类聚!
在正式一点说就是:
类就是具备某些共同特征的实体的集合,它是一种抽象的数据类型,它是对所具有相同特征实体的抽象。在面向对象的程序设计语言中,类是对一类“事物”的属性与行为的抽象。
类的属性和行为:
拿 “学生” 这个类来说,性别和姓名可以当作它的属性,学习可以看作它的行为。即,只要你属于学生类是个学生,你就有性别和姓名这两个属性,还有学习这个行为方法。
class Student{
//属性
String gender;
String name;
//行为
public void study(){{
System.out.println("我爱学习,学习是谁?");
}
}
构造方法:
构造方法是个什么东西?
- 构造方法是一个类的一个方法,它一定存在于你的类中
- 它没有返回类型,形式为:(public) 类名(有参/无参){ 内容 }
- 它的作用是给类中有需要的变量初始化
- 你可以自己写一个或多个构造方法,如果不写则系统会自动给出一个无参构造函数
构造方法什么时候调用?
- 构造方法在对象的创建时候自动调用,调用哪一个构造则具体看你在创建对象时传进来的参数。
- 也就是说构造函数可以重载。
- 构造方法中可以调用类中其他方法。
- 构造函数还可以调用构造函数,但是要注意:不要在相互调用的时候形成一个环式调用-构成一个递归形式!
public class Test {
public static void main(String[] args) {
Student s = new Student();
}
}
class Student{
String a = "你好我是a";
String b = "好巧啊我是b";
Student(){
System.out.println("呵呵");
say();//调用say
}
public void say () {
System.out.println("说话啊");
}
}
我们可以简单的理解构造方法用于类中变量的初始化。但更深的理解我觉得可以是构造就是一根点燃类的引线。其重要性不可言说。
构造方法的灵活!
构造方法可以有参构造,可以无参构造,这样的意义何在?
个人理解:
- 构造方法它没什么了不起,它在怎么跳它都是方法!
- 简化代码!因为类只是一个模子,而对象是变化万千的,对象不一样的地方最基本可以体现在不同对象的属性不同。而构造方法的存在的好处就可以让每一个对象在创建的时候就不同,比如学生类不同对象在创建的时候就给他不同的名字,这样岂不是很省事吗?否则每个对象在创建的时候没有区别,全部都要在后期再来赋值改变,增加代码冗余,而且啰嗦。
- 灵活创建对象调用方法!每个类必然有很多很多种方法,而不同的方法必然又用到了类中不同的属性进行操作。有的方法用的属性多,有的方法用到的属性少,而属性都是要初始化的,我们不可能一来就对所有的变量全部初始化,并且每个对象需要用到的方法也是有限或者说是不同的。也就是一切都充满了不确定性。这个时候我们的构造函数出现了,不同的构造函数其参数也不同。我们在创建对象时需要用到什么方法,需要给哪几个属性初始化就可以通过调用不同的构造函数去实现,这样就灵活的转化到构造函数上去了。
- 安全性!试想一下,我们的类是一个模子,也就是我们不能一来将其属性变量给定死了。那就不同对象需要不同的属性值,但是我们的类又需要隐私,属性不能随便给人改来改去吧,所以我们类中的很多属性其实都设置为了final属性,也就是TJ属性,不能改变的。但是你都不能改变我又怎么给你不同对象的属性赋不同的值呢?这个时候就能通过构造函数实现,在创建对象时就可以调用构造函数对些TJ属性赋初始值,而刚好创建对象的时候构造函数也只会调用一次,完美配合!既保证了隐私,不同对象其属性值又可以不同。
- 在后面学习继承时我们会知道:儿纸的某些方法中需要用到爸吧那继承而来的某些属性,但是此时没有爸吧对象,这个时候其实也需要调用爸吧的构造函数去初始化一些值才可以拿过来用。
- 总而言之,言而总之,构造函数是实现类灵活性安全性封装性多态等的一大基础!(个人理解):如果说类相当于一台面包机,我们看不见这台面包机里面的构造。那构造函数就相当于这台机器的调味按钮,你启动面包机要造面包,你要按一个口味,你不选口味他就默认给你一个口味。。。。然后出来各种口味的面包。