1.构造方法
类中有一种特殊的成员方法,其方法名与类名相同,称为构造方法。
通过构造方法可以完成对象的创建,以及实例变量的初始化。
下面是一个构造方法示例:
public class Puppy{
public Puppy( ) { }
public Puppy(String name) {
//这个构造器仅有一个name
}
}
每个类都有一个隐藏的无参构造函数。
public class Dog{
/**
* 带参构造函数
* @param name
* @param age
*/
public Dog(String name,int age){
this.age = age;
this.name = name;
}
/**
* 无惨构造函数
*/
public Dog(){}
String name;
int age;
public void ptint(){
System.out.println("name = "+this.name+";age = "+age);
}
public static void main(String[] args) {
new Dog().ptint();
new Dog("花花",9).ptint();
}
}
2.构造方法和对象的初始化
构造方法怎么调用,使用哪个运算符?
当使用new 运算符实例化一个对象时,系统为对象创建内存区域并自动调用构造方法初始化成员变量。下面是new运算符实例化一个对象。
Puppy p = new Puppy( );
Puppy p1 = new Puppy(“张三”);
3.实例——用构造方法初始化成员变量
class Triangle
{
int x,y,z;
public Triangle(int i,int j,int k)
{
x=i;y=j;z=k;
public static bpplean judge(Triangle m)
{
if(Math.sqrt(m.x*m.x+m.y*m.y)= =Math.sqrt(m.z*m.z))
//引用Math类库的sqrt()方法
return true;
else
return false;
}
public static void main(String args[]) {
Triangle t1=new Triangle(3,4,5);
if(judge(t1)) //调用judge()方法,判断t1的成员变量是
//否能构成直角三角形的3条边长
System.out.println("这是一个直角三角形");
else
System.out.Println("这不是一个直角三角形");
}
}
4.构造方法的特点
- 构造方法名与类名必须一致,大小写也要一样。
- 构造方法没有返回值,void类型也不写。
- 在创建一个对象的时候,至少要调用一个构造方法。
- 构造方法不能显式地直接调用。
- 构造方法的主要作用是对对象初始化。
- 修饰符列表目前统一写:public。千万不要写public static。
5.构造方法重载
构造方法是支持
方法重载的。在一个类当中构造方法可以有多个。并且所有的构造方法名字都是一样的。
对于实例变量来说,只要你在构造方法中没有手动给它赋值,统一都会默认赋值。默认赋系统值
。
1.方法重载特点:
- 重载的方法必须在同一个类中
- 方法名相同
- 参数列表不同(不包含参数名不同)
- 方法的重载与访问修饰符和返回值类型无关
6.成员变量
类中的属性,也就是直接在类中定义的变量称作成员变量,它定义在方法外面。
局部变量就是定义在方法中的变量;一般情况下,局部变量在使用前需要赋值,否则会编译出错。
成员变量和局部变量的区别:
- 作用域不同。局部变量的作用域仅限于定义它的方法,在该方法外无法访问它;成员变量的作用域在整个类内部都是可见的,所有成员方法都可以使用它,如果访问权限允许,还可以在类外部使用成员变量。
- 初始值不同。成员变量在定义时可以不初始化,Java会给成员变量赋初始值;但是Java不会给局部变量赋初始值,因此在定义局部变量时必须初始化后再使用。
- 在同一个方法中,不允许有同名的局部变量,在不同的方法中可以有同名的局部变量。
- 局部变量可以和成员变量同名,并且在使用时,局部变量具有更高的优先级。