初学者问题, 在 java中一个创建对象的语法 怎么理解?

Samuel-SS 2013-08-09 05:32:10
初学java 看到这个语法, new一个对象后面跟着一个大括号,里面是成员定义,请问是什么意思?
见 private ServiceConnection myServiceConn = new ServiceConnection() 这一行。



import android.content.ServiceConnection;

public class MyListActivity extends ListActivity
{
// some other code ..
// ...

private ServiceConnection myServiceConn = new ServiceConnection()
{
public void onServiceConnected(ComponentName className, IBinder service)
{
}
public void onServiceDisconnected(ComponentName className)
{
}
};
}
...全文
314 8 打赏 收藏 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
matzz 2013-08-11
  • 打赏
  • 举报
回复
经鉴定,匿名类
紫威剩人阚雷 2013-08-11
  • 打赏
  • 举报
回复
匿名类,哇哈哈
紫威剩人阚雷 2013-08-10
  • 打赏
  • 举报
回复
这是一个匿名内部类,效果等同于

class Example extends serviceConnection(){
        public void onServiceConnected(ComponentName className, IBinder service) 
        {  
        }
        public void onServiceDisconnected(ComponentName className) 
        {
        }
}
private ServiceConnection myServiceConn=new Example(); 也就是说匿名内部类就相当于一个继承了指定对象或实现了指定接口的类的实例。
wu19891212 2013-08-10
  • 打赏
  • 举报
回复
匿名内部类,ServiceConnection()不是一个类而是一个接口或者抽象类,大括号里面的是它必须要实现的方法。
lxq_xsyu 2013-08-09
  • 打赏
  • 举报
回复

 import android.content.ServiceConnection;

 public class MyListActivity extends ListActivity
 {
    // some other code ..
    // ...

    private ServiceConnection myServiceConn = new ServiceConnection() 
    {
        public void onServiceConnected(ComponentName className, IBinder service) 
        {  
        }
        public void onServiceDisconnected(ComponentName className) 
        {
        }
    };
}
是一个匿名内部类 匿名类是不能有名称的类,所以没办法引用它们。必须在创建时,作为new语句的一部分来声明它们。这就要采用另一种形式的new语句,如下所示: new <类或接口> <类的主体> 这种形式的new语句声明一个新的匿名类,它对一个给定的类进行扩展,或者实现一个给定的接口。它还创建那个类的一个新实例,并把它作为语句的结果而返回。要扩展的类和要实现的接口是new语句的操作数,后跟匿名类的主体。如果匿名类对另一个类进行扩展,它的主体可以访问类的成员、覆盖它的方法等等,这和其他任何标准的类都是一样的。如果匿名类实现了一个接口,它的主体必须实现接口的方法。 new ServiceConnection()就是实现接口

 public void onServiceConnected(ComponentName className, IBinder service) 
        {  
        }
        public void onServiceDisconnected(ComponentName className) 
        {
        }
这两个方法就是接口的抽象方法的实现
韩_力 2013-08-09
  • 打赏
  • 举报
回复
这是一个匿名内部类,效果等同于
class Example extends serviceConnection(){
        public void onServiceConnected(ComponentName className, IBinder service) 
        {  
        }
        public void onServiceDisconnected(ComponentName className) 
        {
        }
}
private ServiceConnection myServiceConn=new Example();
也就是说匿名内部类就相当于一个继承了指定对象或实现了指定接口的类的实例。
S117 2013-08-09
  • 打赏
  • 举报
回复
靠 万恶的拼音输入法 接口
S117 2013-08-09
  • 打赏
  • 举报
回复
ServiceConnection应该是个借口吧 这中方法是通过匿名内部类的方法实现一个借口

62,620

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧