自学java,有点疑问请教!谢谢先

htljg 2021-03-29 07:29:37


初学者正在自学,有没有好心的朋友帮忙解答一下,谢谢!
...全文
2525 28 打赏 收藏 转发到动态 举报
写回复
用AI写文章
28 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaoxiangqing 2021-04-05
  • 打赏
  • 举报
回复
setArea()是实例方法,只能通过对象来调用
luj_1768 2021-04-02
  • 打赏
  • 举报
回复
还通不过吗?你的代码可能有着强烈的阴谋感,而系统又判断不好你的代码究竟想干什么,于是就只好通不过了。如果只是简单的写成计算三角形面积并显示结果的代码,应该就通过了。如果还通不过,那么就是你被系统记忆了。单纯的从编程规则出发,你的代码应该没有什么问题。
htljg 2021-04-02
  • 打赏
  • 举报
回复
朋友没有仔细看我的图片,本身代码是没错的, 而我的意思是问把其中调用方法的语句ta[x].setArea(); 直接改为setArea(); 为什么通不过。 现在基本上理清了,感谢众多热心的朋友。
允许夏天疯狂 2021-04-01
  • 打赏
  • 举报
回复
下面改为静态就行了
htljg 2021-04-01
  • 打赏
  • 举报
回复
引用 19 楼 小灰狼 的回复:
静态方法,不能直接访问对象的非静态方法 因为静态方法是不随类的对象而存在的,而非静态方法是和对象具体关联的。 静态方法是通过 类名.方法名() 调用的,而非静态方法是通过 对象引用.方法名() 调用的。 假设有一个类,叫 Apple,有个非静态属性 weight 这是一个非静态属性,它和对象关联,不是和类关联。比如系统里只定义了 Apple,但没有创建 Apple 的对象,那么这个 weight 就不存在,如果创建了100个 Apple对象,那么每个 Apple 都会有 weight 属性,并且每个 Appple 的 weight 都不尽相同 而静态方法,不随对象关联,而和类型关联,也就是说,系统里有没有创建Apple对象,或者创建了无数个Apple对象,都不影响静态方法的调用。 那么假设,在静态方法里可以访问非静态成员,以上为例,Apple 里有一个方法 static void f(),它要打印 weight 属性的值,但这时系统里已经创建了100个 Apple 对象,每个Apple对象的 weight 值都不同,那么 f() 方法要打印哪个?这肯定是有矛盾的!所以,静态方法里不能直接访问非静态属性
透彻,
dihycx 2021-04-01
  • 打赏
  • 举报
回复
"><img src=xxx xxx>
sunyiz 2021-04-01
  • 打赏
  • 举报
回复
楼主在主楼贴的代码……也没什么错啊 难道已经改过了?
老王就是我 2021-03-31
  • 打赏
  • 举报
回复
lz用的win98?
蔚蓝天空857 2021-03-31
  • 打赏
  • 举报
回复
静态方法才可以不用对象去调用,非静态就是实例方法,必须通过此类的实例对象来调用,同类调用实例方法也必须创建对象实例来调用。
qq_39936465 2021-03-31
  • 打赏
  • 举报
回复
引用 16 楼 qq_45563681 的回复:
有没有大佬懂sql2012的安装啊
sql安装没难度吧,安装文件有安装前的检测,先运行检测,缺啥先打啥补丁,检测通过就可以安装了。
l245737347 2021-03-31
  • 打赏
  • 举报
回复
方法和属性都改成static可以正常执行,但是每次修改的属性值只有一份,是属于class的,非对象属性值。
小灰狼 2021-03-31
  • 打赏
  • 举报
回复
静态方法,不能直接访问对象的非静态方法 因为静态方法是不随类的对象而存在的,而非静态方法是和对象具体关联的。 静态方法是通过 类名.方法名() 调用的,而非静态方法是通过 对象引用.方法名() 调用的。 假设有一个类,叫 Apple,有个非静态属性 weight 这是一个非静态属性,它和对象关联,不是和类关联。比如系统里只定义了 Apple,但没有创建 Apple 的对象,那么这个 weight 就不存在,如果创建了100个 Apple对象,那么每个 Apple 都会有 weight 属性,并且每个 Appple 的 weight 都不尽相同 而静态方法,不随对象关联,而和类型关联,也就是说,系统里有没有创建Apple对象,或者创建了无数个Apple对象,都不影响静态方法的调用。 那么假设,在静态方法里可以访问非静态成员,以上为例,Apple 里有一个方法 static void f(),它要打印 weight 属性的值,但这时系统里已经创建了100个 Apple 对象,每个Apple对象的 weight 值都不同,那么 f() 方法要打印哪个?这肯定是有矛盾的!所以,静态方法里不能直接访问非静态属性
qq_39936465 2021-03-30
  • 打赏
  • 举报
回复
引用 9 楼 htljg 的回复:
[quote=引用 8 楼 qq_39936465 的回复:][quote=引用 7 楼 htljg 的回复:] 谢谢兄弟
但是静态变量又称为类变量,这个值是对所有Triangle类都会起效的,所以你改为静态可能达不到你需要的效果。[/quote] 嗯,慢慢学习摸索体会中,针对这个程序改为静态变量和静态方法运行结果没有变,其中的非静态与静态的运行逻辑还没理解清楚 还需要不断的学习,给自已加油。[/quote] 因为你是在赋值同时打印结果,你可以试试看再类数组赋值完成后,重新遍历打印area的值看看结果就明白了。
天街小雨_ 2021-03-30
  • 打赏
  • 举报
回复
有没有大佬懂sql2012的安装啊
htljg 2021-03-30
  • 打赏
  • 举报
回复
引用 10 楼 搞起来_ 的回复:
不加static的属于实例方法,需要有实例对象来调用。 直接在主启动方法(静态方法)只能调用静态的setArea方法,并且方法中操作的变量也必须为静态变量。
脉络慢慢清晰了,一个人看书慢慢理解很容易误入歧途,以后得多上论坛讨教,谢谢!
你才是秃头 2021-03-30
  • 打赏
  • 举报
回复
12年的牌子 吓我一跳 我还以为扮猪吃老虎呢
搞起来_ 2021-03-30
  • 打赏
  • 举报
回复
不加static的属于实例方法,需要有实例对象来调用。
直接在主启动方法(静态方法)只能调用静态的setArea方法,并且方法中操作的变量也必须为静态变量。
htljg 2021-03-30
  • 打赏
  • 举报
回复
引用 8 楼 qq_39936465 的回复:
[quote=引用 7 楼 htljg 的回复:] 谢谢兄弟
但是静态变量又称为类变量,这个值是对所有Triangle类都会起效的,所以你改为静态可能达不到你需要的效果。[/quote] 嗯,慢慢学习摸索体会中,针对这个程序改为静态变量和静态方法运行结果没有变,其中的非静态与静态的运行逻辑还没理解清楚 还需要不断的学习,给自已加油。
qq_39936465 2021-03-30
  • 打赏
  • 举报
回复
引用 7 楼 htljg 的回复:
谢谢兄弟
但是静态变量又称为类变量,这个值是对所有Triangle类都会起效的,所以你改为静态可能达不到你需要的效果。
htljg 2021-03-30
  • 打赏
  • 举报
回复
引用 5 楼 qq_39936465 的回复:
[quote=引用 4 楼 htljg 的回复:][quote=引用 2 楼 七国的天下,我要九十九 的回复:]下面方法改成静态的就可以了
试过改静态也是不行的。[/quote] 错误不是写的很清楚么,你虽然setArea改为静态,但是其中调用的变量area,height,length都不是静态,静态只能调用静态。[/quote] 谢谢兄弟
加载更多回复(8)

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧