构造函数
当未创建一个构造函数时,系统会自动提供一个默认的构造函数.
生成对象时,必须调用构造函数.
构造函数的特点:
1. 方法名与类名相同
2. 没有返回类型
3. 参数可以没有
例如:
publicclass Student{
String name;
intage;
doubleweight;
doubleheight;
构造函数区
①提供了一个有参数的构造函数,则系统就不会提供缺省构造函数
à public Student(String name,int age,double weight,doubleheight)
à {
à this.name=name;
à this.age=age;
à this.weight=weight;
à this.height=height;
à }
②可以自己提供一个缺省构造函数,即不带形式参数的构造函数
à Public Student(){}
}
函数重载
函数重载的特点:
1. 方法之间的方法名相同
2. 形式参数列表不同, 即参数的个数不同, 或参数类型不同, 且与参数的变量名无关
3. 有返回类型,但与返回类型无关
4. 存在同一类中,功能相同的函数可以使用相同的函数名,函数的参数不同,函数类型可以不同(1、2、3的总结)
5. 构造方法也可以重载,但不考虑返回类型
例如:
publicclass Moth{
à① publicvoid add(int i,int j){
System.out.println(i+j);
}
à② publicvoid add(int i,int j,int k){
System.out.println(i+j+k);
}
à③ publicvoid add(int i,int j,double k){
System.out.println(i+j+k);
}
à④ publicvoid add(int i,int j,int k,int m,int n){
System.out.println(i+j+k+m+n);
}
}
重写是指子类重新定义父类的虚函数的做法。而重载,是指允许存在多个同名函数,而这些函数的参数表不同(或许参数个数不同,或许参数类型不同,或许两者都不同)。
1. 函数重载是一个类中声明了多个同名的方法,但有不同的参数个数和参数类型。
2. 函数重写是指在子类中声明与父类同名的方法,从而覆盖了父类的方法。重构解决了子类与父类的差异问题
重载和重写都是多态的表现,他们在某些地方很相似,这里将它们之间的区别总结如下:
1 重载和重写的方法名称都相同,但重载要求参数列表不同,而重写要求参数列表完全相同。
2 重载对于方法前面的修饰符没有限制,而重写则对这些修饰符的使用有限制
3 重载时编译器在编译期间就可以确定调用那一个方法,而重写则有可能在运行期间才能确定。
封装
数据封装又称数据隐藏
封装的特点:
1. 封装要用private声明变量
2.然后要提供setter 、getter方法
例如:
public class Student {
Stringname;
à private intage;
doubleweight;
doubleheight;
setter方法
à void setAge(inta){
if(a>120){
System.out.println("年龄错误");
age=20;
}else{
age=a;
}
}
getter方法
à int getAge(){
return age;
}
}
}