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

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

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
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下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

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