黑马程序员技术交流社区

标题: 无构造方法的问题 [打印本页]

作者: 霍明波    时间: 2012-8-18 21:15
标题: 无构造方法的问题
     今天在查看API文档的时候发现一个问题,发现有的类没有构造方法,这是不稀奇,但是在我看见它的方法中有非静态的方法,如果说静态方法可以被类调用,但是非静态方法没有构造函数创造对象怎么调用呢,想了半天不明白,请高手指点下。
作者: 杨彪    时间: 2012-8-18 21:22
http://bbs.itheima.com/forum.php?mod=viewthread&tid=22584&page=1#pid132640
你看看这个
作者: 张忠豹    时间: 2012-8-18 21:25
哥们,看看这个类List(在javaAPI中类似这样的类很多),它是一个接口。它没有构造方法,但是许多程序在操作的时候,都使用它
List list = new ArrayList()
就如上面的例子,就是用子类的构造方法来创建对象,然后赋值给父类对象,list就成了上转型对象,然后可以调用子类重写过的相关方法
一句话:没有构造方法的类,一般应该有子类,就用子类创建对象给它赋值。
作者: 霍明波    时间: 2012-8-18 21:31
杨彪 发表于 2012-8-18 21:22
http://bbs.itheima.com/forum.php?mod=viewthread&tid=22584&page=1#pid132640
你看看这个

哦  刚看了你给的网址,你是说有默认的构造函数吧,我也想过。但是如果在API中都没有构造函数的话是不是就也不会给默认的构造函数呢呢?
作者: 杜佳瑞    时间: 2012-8-18 21:32
虽然没有自己的构造方法,但是有相应的方法得到该类的实例,比如static Pattern compile(String regex) 这个方法就能得到Patten的实例对象,而这个类没有构造函数

作者: 霍明波    时间: 2012-8-18 21:41
张忠豹 发表于 2012-8-18 21:25
哥们,看看这个类List(在javaAPI中类似这样的类很多),它是一个接口。它没有构造方法,但是许多程序在操 ...

哦  对的,可能我很少看API吧,你说的是父类指向子类对象,如果说是子类也没有构造函数怎么办,可能钻牛角尖了。
作者: 杨彪    时间: 2012-8-18 21:45
霍明波 发表于 2012-8-18 21:31
哦  刚看了你给的网址,你是说有默认的构造函数吧,我也想过。但是如果在API中都没有构造函数的话是不是 ...

如果不写构造函数,系统会默认给出的,供创建对象使用
作者: 张忠豹    时间: 2012-8-18 21:56
霍明波 发表于 2012-8-18 21:41
哦  对的,可能我很少看API吧,你说的是父类指向子类对象,如果说是子类也没有构造函数怎么办,可能钻牛角 ...

子类没有构造方法,我种情况倒是少见,如果兄弟碰上个举一个呗!
如果没有子类什么的,那就只能使用匿名内部类调用了
public class TestYunSuanFu {
        public static void main(String args[]){
                Fei fei = new Fei(){
                        public void study() {
                                System.out.println("我学习java");
                        }
                        public void drinking() {
                                System.out.println("我喝水");
                        }               
                };
                fei.study();
                fei.drinking();
        }
}
interface Fei{
        public void study();
        public void drinking();
}
作者: 阳杰    时间: 2012-8-18 22:14
霍明波 发表于 2012-8-18 21:31
哦  刚看了你给的网址,你是说有默认的构造函数吧,我也想过。但是如果在API中都没有构造函数的话是不是 ...

文档中看不到 构造函数 应该是 在封装类时,构造函数被私有化了,不允许外部直接创建对象。
其他的 张忠豹应该是正解 呵呵
作者: 霍明波    时间: 2012-8-19 22:06
解决。。。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2