首页 \ 问答 \ java中this和super的用法

java中this和super的用法

RT   本人比较笨 看了几本关于类的书 本来有点理解的 但又给this和super这两个关键字搞晕了 请高手帮我讲解一下this和super的用法 最好附送一些网络教程和资料啦   谢了
更新时间:2023-06-04 16:06

最满意答案

匿名类顾名思义就是没有名字的类。
interface hello{
      String start();
}
public class ok{
    public String hello(){
       return new hello(){  //这个个地方就是匿名类
              String start(){  return "hello world"; }
       }
   }
}

其他回答

匿名类是不能有名称的类,所以没办法引用它们。必须在创建时,作为new语句的一部分来声明它们。 
这就要采用另一种形式的new语句,如下所示: 

new <类或接口> <类的主体> 
这种形式的new语句声明一个新的匿名类,它对一个给定的类进行扩展,或者实现一个给定的接口。它还创建那个类的一个新实例,并把它作为语句的结果而返回。要扩展的类和要实现的接口是new语句的操作数,后跟匿名类的主体。 
假如匿名类对另一个类进行扩展,它的主体可以访问类的成员、覆盖它的方法等等,这和其他任何标准的类都是一样的。假如匿名类实现了一个接口,它的主体必须实现接口的方法。 
注重匿名类的声明是在编译时进行的,实例化在运行时进行。这意味着for循环中的一个new语句会创建相同匿名类的几个实例,而不是创建几个不同匿名类的一个实例。 
从技术上说,匿名类可被视为非静态的内部类,所以它们具有和方法内部声明的非静态内部类一样的权限和限制。 
假如要执行的任务需要一个对象,但却不值得创建全新的对象(原因可能是所需的类过于简单,或者是由于它只在一个方法内部使用),匿名类就显得非常有用。匿名类尤其适合在Swing应用程序中快速创建事件处理程序。
桌面开发 ME等用得较多
写几个例子 就明白了 
解释没啥用
JAVA的匿名类在JAVA 基础相关视频和书籍上都有很详细的介绍
匿名类是不能有名称的类,所以没办法引用它们。必须在创建时,作为new语句的一部分来声明它们。这就要采用另一种形式的new语句,如下所示: new <类或接口> <类的主体> 这种形式的new语句声明一个新的匿名类,它对一个给定的类进行扩展,或者实现一个给定的接口。它还创建那个类的一个新实例,并把它作为语句的结果而返回。要扩展的类和要实现的接口是new语句的操作数,后跟匿名类的主体。如果匿名类对另一个类进行扩展,它的主体可以访问类的成员、覆盖它的方法等等,这和其他任何标准的类都是一样的。如果匿名类实现了一个接口,它的主体必须实现接口的方法。
java 代码
interface pr   {   void print1();   }     public class noNameClass    {   public pr dest()   {       return new pr(){        public void print1()        {         System.out.println("Hello world!!");        }       };   }     public static void main(String args[])   {       noNameClass c=new     noNameClass();       pr hw=c.dest();       hw.print1();   }   }

相关问答

更多
  • JAVA语言介绍[2022-06-20]

    1995年,美国Sun Microsystems公司正式向IT业界推出了java语言,该语言具有安全、跨平台、面向对象、简单、适用于网络等显著特点,当时以web为主要形式的互联网正在迅猛发展,java语言的出现迅速引起所有程序员和软件公司的极大关注,程序员们纷纷尝试用java语言编写网络应用程序,并利用网络把程序发布到世界各地进行运行。包括IBM、Oracle、微软、Netscape、Apple、SGI等大公司纷纷与Sun Microsystems公司签订合同,授权使用java平台技术。微软公司总裁比尔盖茨 ...
  • new Thread(){ public void run(){ } }.run(); 这就是一个匿名类。
  • 匿名类有类体,类里面一样可以声明方法。但只有覆盖父类的方法才能用,新写的方法用不了。 多态性。也是父类引用指向子类对象这个原因。
  • 匿名类和非匿名类很不一样啊,直接new一个类,而不用对象句柄去接受,只像调用处返回一个匿名对象的内存访问入口。 一般的类则要设置一个句柄,保证这个类或对象的有效访问。 例子可以参考knightzhuwei给处的例子。
  • public class TestMain { public void toShow(MyInterface in){ in.show(); } public static void main(String[] args){ TestMain test = new TestMain(); test.toShow(new MyInterface() { @Override public void show() { System.out.println("OK"); } }); } } public inter ...
  • 匿名类顾名思义就是没有名字的类。 interface hello{ String start(); } public class ok{ public String hello(){ return new hello(){ //这个个地方就是匿名类 String start(){ return "hello world"; } } } }
  • 1)接口不是类,而是一组对类的需求描述,这些类要遵从接口描述的同意格式进行定义。JAVA里是不支持多继承的,但可以实现多个接口。 2)如果再深入局部内部类,可以设想一下,只创建这个类的一个对象,就不用再给它明明了,这个类就是匿名内部类。由于构造器的名字必须与类名相同,而匿名类又没有类名,所以匿名类不能有构造器,而将构造器参数传递给超类的构造器。尤其是在内部类实现接口的时候,不能有任何构造参数。
  • 通过“匿名类”,我认为你是匿名内部类 。 当使用某些“附加”(例如重载方法)创建一个对象的实例时,匿名内部类可能会变得有用,而无需实际子类化。 我倾向于将其用作附加事件侦听器的快捷方式: button.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { // do something } }); 使用这种方法使编码更快一点,因为 ...
  • 如果您查看java api的源文件,您可以在File.java中找到以下内容: public String[] list(FilenameFilter filter) { String names[] = list(); if ((names == null) || (filter == null)) { return names; } List v = new A ...
  • 匿名内部类的目的是扩展和实例化现有类,或者一步实现单个接口。 它的局限性可以从上面得出: 只有一个非final类可以扩展或实现一个接口。 只能访问封闭方法的最终局部变量。 (这是由于当内部类的任何方法被调用时,正常的局部变量将超出范围。) 你不能定义一个构造函数。 (班级没有名字。) 如果你需要多个接口,你可以使用一个本地内部类,它就像一个普通的内部类,它有自己的名字,但是在方法中定义。 我不得不承认,我从来没有见过它在实践中使用过,我认为没有人愿意这样做,希望有人会拿出一个例子。 The purpose ...

相关文章

更多

最新问答

更多
  • 获取MVC 4使用的DisplayMode后缀(Get the DisplayMode Suffix being used by MVC 4)
  • 如何通过引用返回对象?(How is returning an object by reference possible?)
  • 矩阵如何存储在内存中?(How are matrices stored in memory?)
  • 每个请求的Java新会话?(Java New Session For Each Request?)
  • css:浮动div中重叠的标题h1(css: overlapping headlines h1 in floated divs)
  • 无论图像如何,Caffe预测同一类(Caffe predicts same class regardless of image)
  • xcode语法颜色编码解释?(xcode syntax color coding explained?)
  • 在Access 2010 Runtime中使用Office 2000校对工具(Use Office 2000 proofing tools in Access 2010 Runtime)
  • 从单独的Web主机将图像传输到服务器上(Getting images onto server from separate web host)
  • 从旧版本复制文件并保留它们(旧/新版本)(Copy a file from old revision and keep both of them (old / new revision))
  • 西安哪有PLC可控制编程的培训
  • 在Entity Framework中选择基类(Select base class in Entity Framework)
  • 在Android中出现错误“数据集和渲染器应该不为null,并且应该具有相同数量的系列”(Error “Dataset and renderer should be not null and should have the same number of series” in Android)
  • 电脑二级VF有什么用
  • Datamapper Ruby如何添加Hook方法(Datamapper Ruby How to add Hook Method)
  • 金华英语角.
  • 手机软件如何制作
  • 用于Android webview中图像保存的上下文菜单(Context Menu for Image Saving in an Android webview)
  • 注意:未定义的偏移量:PHP(Notice: Undefined offset: PHP)
  • 如何读R中的大数据集[复制](How to read large dataset in R [duplicate])
  • Unity 5 Heighmap与地形宽度/地形长度的分辨率关系?(Unity 5 Heighmap Resolution relationship to terrain width / terrain length?)
  • 如何通知PipedOutputStream线程写入最后一个字节的PipedInputStream线程?(How to notify PipedInputStream thread that PipedOutputStream thread has written last byte?)
  • python的访问器方法有哪些
  • DeviceNetworkInformation:哪个是哪个?(DeviceNetworkInformation: Which is which?)
  • 在Ruby中对组合进行排序(Sorting a combination in Ruby)
  • 网站开发的流程?
  • 使用Zend Framework 2中的JOIN sql检索数据(Retrieve data using JOIN sql in Zend Framework 2)
  • 条带格式类型格式模式编号无法正常工作(Stripes format type format pattern number not working properly)
  • 透明度错误IE11(Transparency bug IE11)
  • linux的基本操作命令。。。