当前位置: 代码迷 >> J2SE >> 类的实例化的小疑点
  详细解决方案

类的实例化的小疑点

热度:85   发布时间:2016-04-24 00:57:10.0
类的实例化的小问题,在线等
java文件中

1) Book book1=new Book();

2)
Book book1=new Book(){
  public void name(){
  System.out.println("is book");
}
};

现问,1 上面二种写法,有何不同呢,
  2 第二种写法中,name方法会在new时就执行吗,这与类的构造器有何不同呢,
thanks

------解决方案--------------------
区别在于一个在实例化是在写这个类,一个是先写好一个类在实例化,2中的name方法不会被执行
------解决方案--------------------
探讨
区别在于一个在实例化是在写这个类,一个是先写好一个类在实例化,2中的name方法不会被执行

------解决方案--------------------
Book book1=new Book(){
public void name(){
System.out.println("is book");
}
};
你这是抽象Book类里面的name()抽象方法吗? 要这个抽象类的实例就要把他的方法重写
------解决方案--------------------
没注意过这个东西
------解决方案--------------------
看了楼上各位的回答,自己试了下,有这样的疑問:

Java code
// Book类class Book{    private String name;    Book(String name)    {        this.name = name;    }    public String getName()    {        return this.name;    }}// main里的代码        Book b = new Book("书1")        {            private String book;            public void changeName()            {                this.book = "哈哈";            }            public String getName()            {                return this.book;            }        };        System.out.println(b.getName());
------解决方案--------------------
第二个写法毫无意义 The method name() from the type new Test(){} is never used locally
------解决方案--------------------
当然不会执行啦,没有调用这个方法怎么会执行呢?
------解决方案--------------------
探讨
看了楼上各位的回答,自己试了下,有这样的疑問:


Java code


// Book类
class Book
{
private String name;

Book(String name)
{
this.name = name;
}

public String getName()
{
……

------解决方案--------------------
楼主写个继承Thread的类就知道每种写法的好处啦。比如你觉得该线程其他地方并不会用到,那么你也不必单独在写一个该线程的类,为了简单起见,你可以写成如下形式。

Java code
Thread thread = new Thread(){            public void run(){                System.out.println("111");            }        };
------解决方案--------------------
针对楼主的第二个问题,在new的时候不会执行该方法,他只是声明了这个对象有这个方法,至于执行与否是看程序的调用的啦
  相关解决方案