Java实验 实验三

  1. 为Vehicle 类创建构造方法给成员变量赋值

public class Vehicle {

    double speed;             //变量声明部分,刻画速度

int power;                //变量声明部分,刻画功率

Vehicle(double speed, int pow;)[

this.speed=speed;power=pow;

}  //创建构造方法给成员变量赋值

 void speedUp(int s) {      //方法定义,刻画加速功能

       speed=speed+s;

    }

    void speedDown(int d) {   //方法定义,刻画减速功能

       speed=speed-d;

    }

    void setPower(int p) {

       power=p;

    }

    int getPower() {

       return power;

    }

    double getSpeed() {

       return speed;

    }

}

public class Exercise4_2{

   public static void main(String args[]) {

Vehicle  car1=  new Vehicle(50,20);

      System.out.println("car1的速度:"+car1.getSpeed());

System.out.println("car1的速度:"+car1.getSPower());

   }

}

  1. 构造方法重载:修改程序1再定义一个无参的构造方法为成员变量赋默认值:

Vehicle (){

Speed=55;

Power=8;

}                         //无参构造方法

public static void main(String args[]) {

Vehicle  car1=new Vehicle(40,10);

Vehicle  car2=new Vehicle();//调用无参构造方法

      System.out.println("car1的速度:"+car1.getSpeed());

System.out.println("car1的速度:"+car1.getSPower());

      System.out.println("car1的速度:"+car2.getSpeed());

System.out.println("car1的速度:"+car2.getSPower());

   }

  1. 修改程序2无参构造方法调用有参构造方法给成员变量赋值:

Public class User{

public static <Vehicle> void main(String args[]) {

Vehicle car1,car2;

Car1=new Vehicle();

Car2=new Vehicle();  

Car1.setPower(128);

Car2.setPower(76);

      System.out.println("car1的功率:"+car1.getPower());

      System.out.println("car2的功率:"+car2.getPower());

Car1.setspeed(20);

Car2.setSpeed(28);

System.out.println("car1的速度:"+car1.getspeed());

System.out.println("car1的速度:"+car1.getspeed());

}

   }

构造方法特点:

  • 方法名和类名相同
  • 无返回值类型的声明
  • 在用new创建对象时调用。
  • 用this(参数)在一个构造方法里调用另一个构造方法,且必须时第一条语句。
  1. 给一个构造方法前面加上返回值类型的声明 如void,观察程序的变化,该如何调用它。

答:如果加上void,它不会返回任何值,不能将它赋值给变量或在表达式中使用

5.Compute类中的add方法实现方法重载

class Compute {

   int add(int a,int b) {

      return a+b;

   }

double add(int x,double y) {//【代码1是否正确

      return x+y;

   }

double add(double a,double b) {

      return a+b;

   }//【代码2//定义对两个实型数据求和的方法

String add(string a,string b){

Return a+b;

}//【代码3//定义对两个字符串数据连接的方法

public class test

{

    public static void main(String args[]) {

     Compute  tom = new Compute ();

      System.out.println(tom.add(10,20));

      System.out.println(tom.add("124325","aasdfg"));

      System.out.println(tom.add(10.0,2.26));

   }

}

注:方法重载不能通过返回值来区分,只能通过参数来区分。

答:【代码一】不正确,double类型的不能后面跟两个int类型,

【代码一】要改为double add(int x,double y)

【代码二】为:double add(double a,double b) {

          return a+b;

          }

【代码三】为:String add(string a,string b){

return a+b;

}

6.将Vehicle类文件移到另一个包中,看程序需要做什么修改。

总结:

控制权限:

私有的控制权限:使成员访问限定在(   类      )内。

缺省的访问控制权限:使类及成员访问限定在( 包  )内。

Public访问控制权限:使类及成员可以实现( 跨包)访问。

类:  ×

作用域

同一包其他类

其他包的类

public

缺省

对于public类的类成员:

作用域

同一类内

同一包

在其他包的子孙类

其他包的其他类

public

protected

缺省

private

7.区分类成员变量、方法和块中的变量

class value  {

   public int x,y;

    value(int a,int b)  {

     x=a;   y=b;

        }

    int add() {

     int x=2;

     {

     int sum=0;

     sum=sum+x+y;

         }

     return sum;

    }

  }

public class A {

       public static void main(String args[]) {

         int total;

         value num=new value(4,5);

         System.out.println("add="+num.add());

       }

     }

运行结果:

add=7

总结:类成员变量是(全局/局部)变量,可以被类中所有方法共享;方法和块中的变量是(全局/局部)变量,只能在所定义的领域内被访问。

8.可变参数

public class Computer {

   public int add(int... x) {  //定义x为可变参数       

  int sum=0;

      for(int i=0;i<x.length;i++) {

         sum=sum+x[i];

      }

      return sum;

   }

}public class Example4_6 {

    public static void main(String args[]){

       Computer com = new Computer();

       System.out.println(com.add());

System.out.println(com.add(1,2,3));

    }

}

  • 13
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值