面向对象基础(二)

1.定义带参方法

//定义带参输的方法

访问修饰符   返回值类型    方法名(参数列表1,参数列表2,参数列表3.....){

        //方法体

} 


注意:参数列表也是形参(形式上的参数),可以有多个,必须指定参数类型。

2,方法调用:

实际参数:实参,不能指定参数类型,必须和形参顺序,个数,类型保持一致。

//学员类
public class Student{
    //属性
    public String name;
    public int age;
    public String address;
    
    //带参方法
    public  void show(String name,int age,String address){            //实参
             System.out.println("姓名:"+name+"年龄:"+age+"地址:"+address);
    }

}

//测试类
public class Test{

    public static void main(String [] args){

        Student stu=new Student();       //创建对象
        stu.show("张三",20,"深圳");       //调用方法,并传实参

        //注意:这里传的实参和Student类的形参个数,类型,要保持一致!
        
    }

}

3.构造方法重载:

作用:初始化对象,在创建对象时被调用。

要求:在同一个类中,方法名与类型一致,没有返回值类型,与访问修饰符无关。

构造方法重载:方法名相同,参数列表不同,与访问修饰符无关。

//学员类
public class Student{
    //属性
    public String name;
    public int age;
    public String address;
    
    //带参方法
    public  void show(String name,int age,String address){            //实参
             System.out.println("姓名:"+name+"年龄:"+age+"地址:"+address);
    }


    //构造方法重载(无参构造)
    public  Student(){
   
         System.out.println("我是无参构造方法重载!");
    }

    //带参构造方法重载
    public  Student(String name, int age, String address){

        System.out.println("我是带参构造方法重载!");
    }

//测试类
public class Test{

    public static void main(String [] args){

        Student stu=new Student();       //创建对象

       注意:这里默认加载的是无参构造方法
        
    }

}
 

4方法重载

  • 基本数据类型传参:传递的是副本,相当于拷贝一份,其实际的值不会改变。
  • 引用数据类型传参(String除外):传递的是引用,相当于共享文件,其中一个人修改之后,其他人看到是修改后的文件。

概念:一个类中定义多个同名的方法,但要求但要求每个方法具有不同的参数类型和参数个数。

要求:方法名相同,参数列表不同(类型或者个数不同),在同一个类中,与方法返回值,访问修饰符无关。

//学员类
public class Student{
    //属性
    public String name;
    public int age;
    public String address;
    
    //无参数的构造方法,方法重载
    public  void show(){           
          System.out.println("编号为1的学生姓名是:"+this.name);
    }

    //带参数的构造方法
    public  void show(int age){           
          System.out.println("李四的是:"+age);
    }


}

//测试类
public class Test{

    public static void main(String [] args){

        Student stu=new Student();       //创建对象
        stu.name="张三";    //为属性赋值
        stu.show();        //这个方法调用是无参构造

        stu.show(18);      //这个方法调用的是有参构造
        
        方法重载特点:方法重载是对原有的方法升级,可以根据参数的不同,采用不同的实现方法,
        可以不需要编写多个名称,简化了类调用方法的代码!        
    }

}
 

5.对象数组

定义:数组中的元素是对象类型

//学员类
public class Student {
	public String name;
	public  int age;
	public String address;
}


//学员管理类
public class StudentBiz {

	Student stu[]=new Student[5];  		//创建对象数组
	/**
	 * 添加学员对象信息
	 */
	public void addStudnetName(Student name) {
		int index=-1;  			
		//找下标
		for (int i = 0; i < stu.length; i++) {
			if(stu[i]==null) {			//找到空的位置,添加学员
				index=i;
				break;
			}
		}
		//判断是否找到
		if(index!=-1) {
			stu[index]=name;			//添加学员
		}else {
			System.out.println("班级已满!");
		}
	}
	
	/**
	 * 显示学员信息
	 */
	public  void showInfo() {
		//循环显示信息
		for (int i = 0; i < stu.length; i++) {
			if(stu[i]!=null) {		//判断是否添加成功
				System.out.println("姓名:"+stu[i].name+",年龄:"+stu[i].age+",地        
                址:"+stu[i].address);
			}
		}
	}
	
}


//测试类
public class Test {
	public static void main(String[] args) {
		Scanner input=new Scanner(System.in);
		StudentBiz biz=new StudentBiz();			//创建学员管理类的对象
		
		//for循环输出要添加的学员信息
		for (int i = 0; i < 2; i++) {
			Student stu=new Student();				//创建学员类
			System.out.print("请输入姓名:");
			stu.name=input.next();					//使用对象接收
			System.out.print("请输入年龄:");
			stu.age=input.nextInt();
			System.out.print("请输入地址:");
			stu.address=input.next();
			
			//调用添加方法,传过去的是一个对象
			biz.addStudnetName(stu);
		}
		//调用打印信息方法
		biz.showInfo();
	}
}


6.this关键字

  • 表示当前对象的引用

  • 区分成员变量和局部变量的命名问题

  • 调用属性

  • 调用方法

  • 调用构造方法

//人类
public class  Person{
    
    //属性
    public String name;
    public int age;
    
    
    //带参构造
    public  Person(String name){            

        this.name=name;        //this指当前对象的成员变量
    }


}

7.成员变量与局部变量的区别:

  • 位置:成员变量在方法外,类里面;局部变量在方法/代码块中。

  • 作用域:成员变量作用域更广,整个类都可以使用;局部变量仅在该方法/代码块中使用。

  • 优先级:局部变量具有更高的优先级。

  • 初始值:成员变量有初始值,可以不赋值就直接使用;局部变量必须赋值后才能使用。

//操作类
public class Operation{

    //成员变量,定义在类里面
    public String add;
    public int num;	
    
    //显示方法
    public void  show(){
        
        int sum=0;            //局部变量,定义在方法里面的变量

    }    
}
扫描二维码关注公众号,回复: 3540759 查看本文章

猜你喜欢

转载自blog.csdn.net/JAVA52Lin/article/details/82868170