为什么主方法调用成员属性需要使用对象调用,成员不用对象可以直接调用?

为什么主方法调用成员属性需要使用对象调用,成员不用对象可以直接调用?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
public class Test {
    String name;
    int age;
    String grade;
    String gender;
     
    public void student(){
        System.out.println("我是一个学生");
    }
     
    public void gender(String gen){
        System.out.println("我是一个"+gen+"孩");
         
    }
     
    public void mySelf(){
        //普通方法调用成员属性不需要使用对象调用?
        System.out.println("我叫"+name+",今年"+age+"岁了,读小学"+grade+"了");
    }
     
    public static void main(String[] args) {
      //使用new关键字实例化对象
        Test one = new Test();
         
      //传入name、age、grade的参数值
        one.name = "李明";
        one.age = 10;
        one.gender = "男孩";
        one.grade = "五年级";
 
      //分别调用student、sex、mySelf方法
        one.student();
        one.gender(one.gender);
        one.mySelf();
        //主方法调用成员属性需要使用对象调用
        // System.out.println("我叫"+name);
 
 
    }
 
}

主方法直接用name 会报错,mySelf方法直接用name, age, grade,不传入参数和对象,也没有单独实例对象使用却没有报错 

还有,置顶答案的mySelf方法不符合任务要求,任务要求无参无返,他的mySelf带参数列表了,而且还置顶无法回复,官方不能自己出个答案吗?

正在回答 回答被采纳积分+1

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

3回答
weixin_慕UI5143857 2019-12-23 18:12:15
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
public class Person {
    //属性:name、age、grade
    String name;
    int age;
    String grade;
    //创建无参无返回值的student方法,描述为:我是一名学生!
    public void student() {
        System.out.println("我是一名学生!");
    }
    //创建带参(性别sex)的sex方法,描述为:我是一个**孩!
    public void sex(String sex) {
        System.out.println("我是一个" + sex + "孩!");
    }
    //创建无参无返回值的mySelf方法,分别介绍姓名(name),年龄(age),年级(grade)
    public void myself() {
        String str = "我叫" + name + ",今年" + age + "岁了,读小学" + grade;
        System.out.println(str + "了。");
    }
 
}
 
 
public class Test {
 
    public static void main(String[] args) {
      //使用new关键字实例化对象
        Person student1 = new Person();
      //传入name、age、grade的参数值
        student1.name = "李明";
        student1.age = 10;
        student1.grade = "五年级";
      //分别调用student、sex、mySelf方法
        student1.student();
        student1.sex("男孩");
        student1.myself();
    }
 
}

案例的代码。

他的要求是需要在2个Java文件当中执行的http://img1.sycdn.imooc.com//climg/5e00906c0905e87d04700100.jpg

所以程序需要分成两部分分开写。分别写道Test.java和Person.java


好帮手慕小尤 2019-12-23 10:02:19

同学你好,主方法是静态方法,而静态方法不能直接调用普通的成员属性,需要使用实例化对象调用非静态的方法与属性。mySelf是普通方法,所以可以直接调用成员属性。

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

好帮手慕小尤 2019-12-22 14:12:02

同学你好,1. 非常抱歉,给您体验不好的学习体验,已取消置顶的问答。关于答案的问题,在编程中,最重要的就是自己的思想,每个人都会有自己的实现思路。所以老师没有办法给你标准答案。如果同学在写代码的过程中有什么问题,同学可以在问答区进行提问哦~ 老师都会帮助你解决问题。

2. 主方法是一个静态方法,在静态方法中需要通过实例化对象调用非静态的方法与属性。因静态方法是在类加载的时候创建的,而成员方法是在对象实例化的时候加载的,当静态方法以及加载好时,成员方法可能尚未初始化好,所以不能在静态方法中直接调用非静态属性以及非静态方法。

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

  • 提问者 慕数据0164170 #1
    对啊,但是为什么mySelf成员方法可以直接调用成员属性name,age,grade,gender?主方法需要对象调用成员属性,成员方法却可以直接调用成员属性?
    2019-12-23 03:47:43
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

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