Java语言基础之二: 方法设计

Java语言基础之二: 方法设计
1.如何设计方法
设计定义方法要有:
    返回值
    参数
    方法体
1.方法的返回值

在声明方法时,要指定返回值的类型,有返回值的方法需要使用return语句将返回给调用者。
例:

class Person {
int age ;
public void setAge(int _age){  //返回值类型void
age = _age ;
}
public int getAge(){   //返回值类型int
return age;
}
}
2.方法的参数

可以没有参数,也可以有参数,有参数的方法在定义的时候,需要指定参数的类型和名称。指定的参数成为形式参数,参数的类型可以是基本数据类型,也可以是引用类型。
例:

class Person{
	String name ;
	int age ;
public setNameAndAge(String _name ,int age){  //参数类型,可基本数据类型,也可引用类型;参数个数,可多可少
name = _name ;
age = _age ;
}
}
3. 方法的实现

在方法的声明后面使用一对大括号,大括号内部是方法体。方法体是对方法的实现,包括局部变量的声明和所有合法的Java语句。

class Person{

abstract public void setInfo() ;			//这种方式称为方法的声明,无方法体,视为抽象方法
public String getInfo(){		//完整的方法,方法体不为空
    return name ;
}
public Person(){       //完整的构造方法,尽管方法体为空
}
}
4.访问方法和修改方法

一般把能够返回成员变量值的方法称为访问方法,把能够修改成员变量值的方法称为修改方法。

访问方法名一般为getXxx(),也称getter() ,返回值一般与原来的变量值类型相同
修改方法名一般为setXxx(),也称setter() ,返回值一般为void
5. 方法签名

在一个类中可以定义多个方法,可以通过方法签名来区分这些方法。方法签名是指方法名、参数个数、参数类型和参数顺序的组合。

方法签名的定义不包括方法的返回值。方法签名将用在方法重载、方法覆盖和构造方法中。

2. 方法的调用

一般来说,要调用类的实例方法,需要先创建一个对象,然后通过对象引用调用。

class Person{
    String name;
    int age;
    public void tell(){
        System.out.println("姓名:" + name + ",年龄:" + age);
    }
}
public class ClassDemo1{
    public static void main(String[] args){
        Person per = new Person();		//实例化对象
        per.tell();						//通过对象调用
    }
}

如果要调用类的静态方法,通常使用类名调用。

class Person{
     String name;
    int age;
    public static void tell(){
        System.out.println("这是一个静态方法");
    }
}
public class ClassDemo1{
    public static void main(String[] args){
        //Person per = new Person();
        Person.tell();  //静态方法调用
    }
}

无参数的方法调用时,只使用括号即可,有参数的方法需要提供实际参数。

class Person{
     String name;
    int age;
    public  void tell(){
        System.out.println("这是一个无参方法");
    }
        public  void tell2(String n){
        System.out.println("这是一个有参方法,参数是:" + n);
    }
}
public class ClassDemo1{
    public static void main(String[] args){
        Person per = new Person();
        Per.tell();  //无参方法调用
        per.tell2("Hello world!"); //有参数方法调用
    }
}

方法调用主要使用在三类场合:

//1.用对象引用调用类的实例方法。
//2.类中的方法调用本类中的其他方法。
//3.用类名直接调用static方法。
3. 方法重载

重载机制指的是允许在一个类中定义多个同名的方法,这称为方法重载。

要实现方法的重载要求:

要么参数个数不同;

要么参数类型不同。

注意: 仅仅靠返回值不同无法区分重载方法。

class Person{
    String name;
    int age;

     public  void tell(String n){
     name = n;
        System.out.println("方法重载之,接收一个参数,参数赋值给 成员变量:name = " + name);
    }
     public  void tell(String n , int a){
     name = n ;
     age = a ;
        System.out.println("方法重载之,接收两个参数,参数赋值分别给 成员变量:name = " + name +",成员变量:age = " + age);
    }
}
public class ClassDemoX{
    public static void main(String[] args){
        Person per = new Person();

        per.tell("李四");				//同名方法,一个参数
        per.tell("张三",20);			//同名方法,两个参数
    }
}

方法重载就是在类中允许定义签名不同的方法。

4. 构造方法

构造方法也有名称,参数和方法体。构造方法与普通方法的不同:

构造方法的名称必须与类名相同;

构造方法不能有返回值,也不能有返回void;

构造方法必须在创建对象时用new运算符调用。

class Person{
	String name;
	int age;
	public Person(){
	}
}
public class Demo{
public static void main(String[] args){
Person per = new Person();
}

}
1. 无参数构造方法

构造方法主要作用是创建对象并初始化类的成员变量。对类的成员变量,若声明时和在构造方法中都没有初始化,新建对象的成员变量值都被赋予默认值。

不同类型的成员变量,默认值不同:

整型数据默认值为0;

浮点类型数据默认值为0.0;

字符类型数据默认值为‘\u0000’;

布尔类型数据默认值为:false;

引用类型数据默认值为null。

class Person{
	String name;
	int age;
	public Person(){
	}
}
public class Demo{
public static void main(String[] args){
Person per = new Person();
System.out.println("name = " + per.name +", age =" + per.age);  //此处输出null和0
}

}
2. 带参数构造方法

如果希望在创建一个对象时将其成员变量设置为某些数值,不采用默认值,可以定义带参数的构造方法。

class Person{
	String name;
	int age;
	public Person(String n ,int a){
	name = n ;
	age = a ;
	}
}
public class Demo{
public static void main(String[] args){
Person per = new Person("张三"20);
System.out.println("name = " + per.name +", age =" + per.age);  //此处输出张三和20
}

}
3. 默认构造方法

如果在定义类时没有为类定义任何构造方法,则编译器自动为类添加一个默认构造方法。

默认构造方法是无参数构造方法,方法体为空。

一旦类里定义了带参数的构造方法,编译器就不再提供默认构造方法,如果还希望使用无参数构造方法创建对象,必须自己明确定义一个。

4.构造方法的重载

通过重载构造方法,可以有多种方式创建对象。

class Person{
	String name;
	int age;
	public Person(String n ){
	name = n ;
	 	}
	public Person(String n ,int a){
	name = n ;
	age = a ;
	}
}
public class Demo{
public static void main(String[] args){
Person per1 = new Person("李四");
Person per2 = new Person("张三"20);
System.out.println("name = " + per1.name +", age =" + per1.age);  //此处输出李四和0
System.out.println("name = " + per2.name +", age =" + per2.age);  //此处输出张三和20
}

}
5.this关键字的使用

this关键字表示对象本身,在一个方法体的方法体或者参数中,也可能声明与成员变量同名的局部变量,此时的局部变量会隐藏成员变量,要使用成员变量就需要在前面加上this关键字。

class Person{
	String name;
	int age;
	public void setName(String name ){
		this.name = name ;
	 	}
}

this关键字的另外一个用途,是在一个构造方法中调用该类的另外一个构造方法。

class Person{
	String name;
	int age;
	public Person(){
	System.out.println("Person对象被实例化!");
	}
	public Person(String name ){
		this();   //调用无参数构造方法
		this.name = name ;
	 	}
	 	

}

注意:如果在构造方法中调用另外一个构造方法,则this语句必须是第一条语句。

this关键字的使用场合:

解决局部变量与成员变量同名的问题;

解决方法参数与成员变量同名的问题;

用来调用该类的另外一个构造方法。

Java语言规定,this关键字只能用在非static方法中。

6.方法参数的传递

在Java语言中,方法的参数传递是按照值传递,即在调用方法时将实际参数值的一个 副本传递给方法中的形式参数,方法调用结束后,实际参数的值并不改变。形式参数是局部变量,其作用域只在方法内部,离开方法后自定释放。

基本数据类型的参数,是将实际参数值的一个副本传递给方法,方法调用结束后,对原来的数值没有影响。

public class Demo{
public int add(int i){
return i*10;
}
public static void main(String[] args){
Demo d = new Demo() ;
int a =20 ;
System.out.println(d.add(a));   //a = 20,d.add(a) = 200

}

} 

引用数据类型,实际传递的是引用值(引用类的地址),因此在方法的内部有可能改变原来的对象。方法返回时引用没有改变,但对象的状态可能改变。

注意:如果为方法传递的是不可变的引用类型对象,如:String对象,对象在方法内部不可能被改变。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值