面向对象中 方法的调用及应用

 方法之间允许互相调用,不需要知道方法的具体实现,实现重用,提高效率

        如:

package cn.bdqn.demo01;
public class Student {
       
       //定义方法a
       public void a(){
             System.out.println("我是方法a");
       }
       //定义方法b
       public void b(){
             System.out.println("我是方法b");
             a();//可以直接调用
       }
}
但是不在一个类中不可以直接调用
    如 package cn.bdqn.demo01;
public class Teacher {
       //定义一个c
       public void c(){
             System.out.println("我是方法c");
             /*a();*///不能直接调用student类中的a方法,要想使用需要使用Student创建对象
             Student num =new Student();
             num.a();
       }
}

方法调用综合例题

  1.package cn.bdqn.demo01;
public class Tourist {
       //一个景区根据游人的年龄收取不同价格的门票。请编写游人类,
       //     根据年龄段决定能够购买的门票价格并输出
       //定义类的属性
       String name;
       int age;
       
       //定义方法
       public void payMoney (int age){
             if(age>60||age<18){
                    System.out.println(name+"年龄为:"+age+"门票免费");
             }else{
             System.out.println(name+"年龄为:"+"门票价格为20美金");
       }
       }


测试类:       public static void main(String[] args) {
             // 创建Scanner对象
             Scanner sc = new Scanner(System.in);
             
             String  name;
             do {
             System.out.println("请输入姓名:");
             name = sc.next();
             if(name.equals("n")){
                    break;
             }
             System.out.println("年龄:");
             int age =sc.nextInt();
             //创建Tourist的对象
             Tourist vio = new Tourist();
             vio.name=name;
             vio.age=age;
             vio.payMoney(age);
             }while(!name.equals("n"));
             System.out.println("程序退出");
       }
}

总结

类和对象的关系:

    类是抽象的,对象则是具体的

    类是由相同属性 和方法的多个对象的合集

    对象是有属性和方法组成的,类是模板,对象可以在类中调用方法和具体的属性

如何定义类

    访问权限修饰符 属性(数据类型)  属性名 (变量名);

创建对象

    属性(数据类型)  属性名 (变量名)= new 属性();

如何定义方法及调用方法

    访问权限修饰符 返回值类型 方法名(参数列表){方法体}

        调用:对象名.方法名

  方法与方法重载

            访问权限修饰符 返回值类型 方法名(参数列表){方法体}

        调用:对象名.方法名(参数列表)

综合例题:

   增加学员姓名在保存了多个学生姓名的数组中,指定查找区间,查找某个学生姓名并显示是否查找成功

//定义属性
       String name;
       int age;
       
       //定义方法
       public static boolean print(int startIndex,int endIndex,String name,Student[] student){
             for (int i = startIndex; i <= endIndex; i++) {
                    int count=0;
                    if(name.equals(student[i].name)){
                           return true;
                    }else{
                           count++;
                           if(count==endIndex-startIndex+1){
                                 return false;
                           }
                    }
             }
             return false;
             
       }
       //测试类
            public static void main(String[] args) {
             /*
              * 增加学员姓名
              * 在保存了多个学生姓名的数组中,指定查找区间,查找某个学生姓名并显示是否查找成功
              */
             //定义五个Student类的对象
             Student stu1 =new Student();
             stu1.age=20;
             stu1.name="小玉";
             
             Student stu2 =new Student();
             stu2.age=20;
             stu2.name="小王";
             
             
             Student stu3 =new Student();
             stu3.age=20;
             stu3.name="小孙";
             
             
             Student stu4 =new Student();
             stu4.age=20;
             stu4.name="小张";
             
             
             Student stu5 =new Student();
             stu5.age=20;
             stu5.name="小李";
             
             
             //定义一个数组来存储学生
             Student[] stus ={stu1,stu2,stu3,stu4,stu5};
             
             //指定查找区间,查找某个学生姓名并显示是否查找成功


             //创建一个scanner的类(没有调用方法之前的常规办法)
             /*Scanner sc =new Scanner(System.in);
             int count=0;
             System.out.println("请输入查找开始区间:");
             int  startIndex=sc.nextInt();
             System.out.println("请输入结束区间:");
             int endIndex = sc.nextInt();
             System.out.println("请输入查找姓名:");
             String name=sc.next();*/
       /*     for (int i = startIndex; i <= endIndex; i++) {
                    if(name.equals(stus[i].name)){
                           System.out.println("姓名在此区间");
                    }else {
                           count++;
                           if(count==endIndex-startIndex+1){
                           System.out.println("姓名不在此区间");
                           }
                    }
                    
             }*/(用过方法之后的操作)
             boolean bool= Student.print(1, 4, "小史", stus);
             System.out.println(bool);
       
       }
}


常见错误:

1)调用方法时不能实参实参类型 

2)形参和实参数据类型不一致!数量也要一致

基本类型和引用数据类型在传参的区别:

                基本数据类型传的参数是变量的值,改变一个变量的值是不会影响另一个变量的值。引用数据类型(类,数组,接口),赋值是把原对象的引用(可以理解为内存地址)传给另外一个引用

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值