有些步骤没搞懂

有些步骤没搞懂

public class Pet{
private static String name;
   //声明属性 typenameageweight
   public String type;
   public int age;
   public float weight;

   //声明带参无返回值的eat方法
   public static void eat(float foodWeight){
System.out.println(name+"今天进食了"+foodWeight+"千克的食物");
   }

//实例化两个Pet对象,分别为两个对象的属性赋值,并调用其eat方法
   public static void main(String[] args){
Pet mao =new Pet();
       mao.type ="布偶";
       mao.name ="小仙女";
       mao.age = 2;
       mao.weight = 2.1f;
       Pet.eat(1.1f);
       System.out.println(mao.name+"是一只"+mao.type+"她今年"+mao.age+"岁了");

   }
}

为什么是private 使用public就出现问题了 原因是什么

多一步命名是多此一举吗 直接命名会更简单,但是好像不能命名中文,是吗

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学你好

1、使用public也是可以正常运行的,如下

http://img1.sycdn.imooc.com//climg/607e36d7097c272311510442.jpg

2、同学指的是在main方法中给属性赋值吗,如果是,这里并不是多此一举哦,如果直接在定义属性时命名,实例化对象后调用属性都是这一个值,如果想要改变还是需要重新赋值,这样就不符合java的特性,所以一般不建议在定义时直接进行赋值

祝学习愉快~

  • Youandme4636565 提问者 #1

    谢谢您的回复,只是我还是没搞懂,为什么定义name 的时候不能和其他的例如定义type时一样 直接public String name; 这是IDE运行之后报错自动纠错改成这样的 (private static String name)不是很明白 ,加static 和不加static 的区别在哪呢

    2021-04-20 20:03:08
  • 好帮手慕阿园 回复 提问者 Youandme4636565 #2

    同学你好,static是静态的意思,因为在定义eat方法时使用了static关键字休息,所以里面调用的属性也需要是static修饰的,所以这里提示name需要添加static;这里可以将eat方法的static去掉,去掉后在main方法中需要使用实例化对象mao调用eat

    http://img1.sycdn.imooc.com//climg/607f87c109f955e306980497.jpg

    修改如下

    http://img1.sycdn.imooc.com//climg/607f886e096c0a2107040423.jpg

    祝学习愉快~

    2021-04-21 10:05:38
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
零基础 Java工程师体验营
  • 参与学习           人
  • 提交作业       53    份
  • 解答问题       138    个

想学Java编程,但是不知道是否适合自己?不要着急!本课程专为想了解Java的小伙伴量身打造,采用案例驱动,开发小慕听书项目的同时,还可以对Java基础知识点进行学习!

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师