Bearideal 2015-02-14 09:37 采纳率: 0%
浏览 3121

类是非静态的,而类中的主函数是静态的,静态方法为什么可以调用非静态类的内部类的非静态方法

代码如下所示,TestEX是非静态类,而它的主方法是静态的,TestEX类中含有两个内部类,两个内部类也是非静态的,内部类中的方法同样也是非静态的。

问题是:在静态的主方法中,实例化了内部类,为什么就可以调用非静态了呢?

哪个圈绕不出来了,求帮助!

 public class TestEX{

    public class IntegerException extends Exception {
        String message;
        public IntegerException(int m) {
            message = "age " + m +" is wrong!";
        }
        public String toString() {
            return message;
        }
    }

    public  class People {
        private int age;
        void setAge(int age) throws IntegerException {
            if (age >= 160 || age <= 0) {
            throw new IntegerException(age);
            }
            else {
                this.age = age;
            }
        }
        int getAge() {
            System.out.println("age " + age + " is right!");
            return age;
        }
    }

    public static void main(String[] args) {
        TestEX.People wang = new TestEX().new People();
        TestEX.People zhang = new TestEX().new People();
        try{
            wang.setAge(180);
            System.out.println(wang.getAge());
        }catch(IntegerException e){
            System.out.println(e.toString());
        }
        try{
            zhang.setAge(37);
            System.out.println(zhang.getAge());
        }catch (IntegerException e) {
            System.out.println(e.toString());
        }
    }
}



  • 写回答

5条回答 默认 最新

  • danielinbiti 2015-02-14 11:30
    关注

    静态方法中不能调用非静态方法,原因是因为静态方法没有this指向实例。所以不能有非静态方法。
    如果是实例.非静态方法,这有明确的this指向。所以这不是“静态方法中不能调用非静态方法”所描述的意思。

    评论

报告相同问题?

悬赏问题

  • ¥20 求数据集和代码#有偿答复
  • ¥15 关于下拉菜单选项关联的问题
  • ¥20 java-OJ-健康体检
  • ¥15 rs485的上拉下拉,不会对a-b<-200mv有影响吗,就是接受时,对判断逻辑0有影响吗
  • ¥15 使用phpstudy在云服务器上搭建个人网站
  • ¥15 应该如何判断含间隙的曲柄摇杆机构,轴与轴承是否发生了碰撞?
  • ¥15 vue3+express部署到nginx
  • ¥20 搭建pt1000三线制高精度测温电路
  • ¥15 使用Jdk8自带的算法,和Jdk11自带的加密结果会一样吗,不一样的话有什么解决方案,Jdk不能升级的情况
  • ¥15 画两个图 python或R