| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4230 人关注过本帖
标题:如何在静态类创建非静态对象?怎么在静态方法里引用 非静态子类 的方 ...
取消只看楼主 加入收藏
邹特强
Rank: 2
等 级:论坛游民
帖 子:123
专家分:85
注 册:2016-9-21
结帖率:85.71%
收藏
已结贴  问题点数:20 回复次数:5 
如何在静态类创建非静态对象?怎么在静态方法里引用 非静态子类 的方法???
代码如下,表情位置编译错误,Dog是Animal的一个非静态子类,那么如何在静态的main方法里创建Dog对象呢?
上面是第一个问题,第二个问题:如何调用非静态子类里的非静态方法roar()???新手请多赐教
package 多态2;

public class Animal
{
    int i;
    public void roar()
    {
        System.out.println("Ruff!");
    }
    public class Dog extends Animal
    {
        public void roar()//静态方法不能被继承吗?对,也不能被覆盖,一般专业来说叫做被隐藏
        {
          System.out.println("I am a dog!");
          super.roar();//可以在子类方法中利用super引用父类方法
        }
    }
    public static void main(String args[])//这里如果用static ,表示静态方法,则其在类加载时就会分配内存,就是执行到这个类时,同时分配了内存,而类里面还有
    {                  //还有非静态成员,其必须在类的对象产生时才会分配内存,再通过类的对象去访问,也就意味着如果用dog a=new dog(),计算机在内存中找不到dog
        //定义的变量没有使用
        Dog a=new Dog();这里编译错误
    }
}
搜索更多相关主题的帖子: public package 如何 表情 专业 
2017-03-22 21:42
邹特强
Rank: 2
等 级:论坛游民
帖 子:123
专家分:85
注 册:2016-9-21
收藏
得分:0 
回复 3楼 纵横阳仔
恕我是新手,这个程序是没有逻辑的,只是为了想运用知识点随意写的,所以请不要从逻辑角度考虑。
其二,虽然我是新手,但静态类和静态方法是的确存在的,与静态方法和静态变量一样,带有static,如果我说的有错,请指点

............
2017-03-23 12:52
邹特强
Rank: 2
等 级:论坛游民
帖 子:123
专家分:85
注 册:2016-9-21
收藏
得分:0 
回复 2楼 枫xby
多谢耐心指点,我懂你的意思了,但还有几个疑问:
1,你说一个java文件只能有一个public的类,但为什么我在源程序中用了两个public的类编译怎么没有错误?
还有既然编译没有错误,那么有一个public类和有两个或更多public类有什么区别?
2,我发现你把我设的子类提到父类外面去了,我想问,我把子类直接放到父类里,编译也没有错啊,那么两者有什么区别呢?
问题有些繁琐,请见谅!

............
2017-03-23 13:07
邹特强
Rank: 2
等 级:论坛游民
帖 子:123
专家分:85
注 册:2016-9-21
收藏
得分:0 
回复 7楼 纵横阳仔
嗯,大佬这么回答看得就很舒服,原谅我之前的一时气盛,大佬的回答的确很专业,是我学的还太少。
我还想问一个问题,就是我回复二楼提出的第一个问题,一个文件只能有一个public类的那个,能不能回答下?

............
2017-03-25 20:52
邹特强
Rank: 2
等 级:论坛游民
帖 子:123
专家分:85
注 册:2016-9-21
收藏
得分:0 
回复 7楼 纵横阳仔
public class Animal
{
    int i;
    public void roar()
    {
        System.out.println("Ruff!");
    }
    public class Dog
    {
        public void roar()//静态方法不能被继承吗?对,也不能被覆盖,一般专业来说叫做被隐藏
        {
          System.out.println("I am a dog!");
          super.roar();//可以在子类方法中利用super引用父类方法
        }
    }
    public class Cat
    {
        public void Miao()//静态方法不能被继承吗?对,也不能被覆盖,一般专业来说叫做被隐藏
        {
          System.out.println("I am a cat!");
          super.roar();//可以在子类方法中利用super引用父类方法
        }
    }
    public static void main(String args[])//这里如果用static ,表示静态方法,则其在类加载时就会分配内存,就是执行到这个类时,同时分配了内存,而类里面还有
    {                  //还有非静态成员,其必须在类的对象产生时才会分配内存,再通过类的对象去访问,也就意味着如果用dog a=new dog(),计算机在内存中找不到dog
        //定义的变量没有使用
    }
}
还有,运用你说的静态内部类和成员内部类的概念,
把表情位置的代码改变成如上,
那么分别怎么调用方法roar()和Miao()啊,我试了几下,不知道怎么调用

............
2017-03-25 21:05
邹特强
Rank: 2
等 级:论坛游民
帖 子:123
专家分:85
注 册:2016-9-21
收藏
得分:0 
回复 10楼 HolyOrder
请问你说的表情位置的调用方法吗?无法通过编译啊,是我哪错了???
public class Animal
{
    int i;
    public void roar()
    {
        System.out.println("Ruff!");
    }
    public static class LittleAnimal
    {
        public void print()
        {
            System.out.println("you are smart!");
        }
    }
    public static void main(String args[])
    {               
        //定义的变量没有使用
        Dog a=new Dog();//这里编译错误
        LittleAnimal animal=new LittleAnimal();
        Animal.LittleAnimal.print();
        a.roar();
    }
}

//一个.java文件中只有一个public修饰的类  
class Dog extends Animal
{
    //这是重写父类的方法
    public void roar()
    {
      System.out.println("I am a dog!");
     
    }
}
//怎么调用静态内部类的非静态方法?
//怎么调用非静态类的方法fx

............
2017-03-27 23:34
快速回复:如何在静态类创建非静态对象?怎么在静态方法里引用 非静态子类 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017649 second(s), 11 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved