java中匿名类的注意细节

abstract class Outer{
    int num;
    public Outer(int x){
        num = x;
    }
    public abstract void show1();
     
    public abstract void show2();
}
 
public class PC{
    public static void main(String[] args){
       new Outer(55)//构造父类部分
       //子类重写部分
       {
            public void show1(){
               System.out.println(num++);
            }
             
            public void show2(){
               System.out.println(num++);
            }
             
            public void show3(){
               System.out.println(num++);
            }
        }.show3();
         
         
        Outer out =  new Outer(55){
            public void show1(){
               System.out.println(num++);
            }
             
            public void show2(){
               System.out.println(num++);
            }
             
            public void show3(){
               System.out.println(num++);
            }
        };
         
        out.show1();
        out.show2();
        //out.show3();// 错误: 找不到符号  out.show3();
         
        //注意: 第一个 new Outer(55) 得到是 Outer 的子类对象!
        //第二个 new Outer(55)得到子类对象之后又进行了类型提升, 所以它会隐藏自身特有的方法,呈现其父类的属性!
    }
}
时间: 2024-10-09 17:37:58

java中匿名类的注意细节的相关文章

java中匿名类有关键字new 实例化一个对象有关键字new

问题描述 java中匿名类有关键字new 实例化一个对象有关键字new java中匿名类有关键字new 实例化一个对象有关键字new 那么如何区分匿名类和实例化一个对象 解决方案 不用区分.其实两者是一回事. 你可以认为对匿名类new是一个特例,它产生一个这个类型,然后产生一个这个类型的对象. 本质上这里new还是实例化对象. 解决方案二: 在程序运行中,以及调用者看来,一个匿名类的对象和一个一般的对象是一回事. 解决方案三: 转化的中间代码两个是一回事儿 解决方案四: C++中关键字newne

java监听-java中匿名类作为一个方法的参数的时候是不是默认返回一个匿名对象

问题描述 java中匿名类作为一个方法的参数的时候是不是默认返回一个匿名对象 java中匿名类作为一个方法的参数的时候是不是默认返回一个匿名对象 比如用在监听方法当中作为参数的时候 解决方案 可以这么理解,通常是创建一个匿名类的实例然后作为参数传递给指定方法 . 解决方案二: 匿名类,作为参数是返回相应的匿名对象. 具体还是要看调用的函数有参数要求吧,参数是一个对应的匿名类,或者其父类,使用它就没有问题.

java中匿名对象和匿名类都有关键词new吧

问题描述 java中匿名对象和匿名类都有关键词new吧 java中匿名对象和匿名类都有关键词new吧 那他们应该怎么区分呢 是不是匿名类就没有方法体 匿名对象就有方法体呢 具体是如何区分的呢 解决方案 首先,匿名对象是没有变量接收的对象,例如 new Date(); 这就是定义了一个Date 类型的匿名对象,之所以叫匿名,是因为它没有变量接收,不能调用对象的.操作. 其次,匿名类是没有显示定义类文件的类,但它不一定是匿名对象,例如: Out anonyInter=new Out(){// 获取匿

Java中的类反射机制

一.反射的概念 :反射的概念是由Smith在1982年首次提出的,主要是指程序可以访问.检测和修改它本身状态或行为的一种能力.这一概念的提出很快引发了计算机科学领域关于应用反射性的研究.它首先被程序语言的设计领域所采用,并在Lisp和面向对象方面取得了成绩.其中LEAD/LEAD++ .OpenC++ .MetaXa和OpenJava等就是基于反射机制的语言.最近,反射机制也被应用到了视窗系统.操作系统和文件系统中. 反射本身并不是一个新概念,它可能会使我们联想到光学中的反射概念,尽管计算机科学

stringbuffer-关于Java中FileInputStream类的一些新手疑问

问题描述 关于Java中FileInputStream类的一些新手疑问 在每次使用FileInputStream的read方法时,需要用到字节数组bytes和真实读取长度len,如代码: public static void read(){ File file = new File("D:/学习/Android/代码/Workplace/Java_8_1_File/a.txt"); try { //针对文件创建一个输入流 InputStream in = new FileInputSt

基于Java中Math类的常用函数总结_java

Java中比较常用的几个数学公式的总结: //取整,返回小于目标函数的最大整数,如下将会返回-2 Math.floor(-1.8): //取整,返回发育目标数的最小整数 Math.ceil() //四舍五入取整 Math.round() //计算平方根 Math.sqrt() //计算立方根 Math.cbrt() //返回欧拉数e的n次幂 Math.exp(3); //计算乘方,下面是计算3的2次方 Math.pow(3,2); //计算自然对数 Math.log(); //计算绝对值 Mat

Java中获取类路径classpath的简单方法(推荐)_java

如下所示: <SPAN style="FONT-SIZE: 18px"> System.out.println("++++++++++++++++++++++++"); String path = System.getProperty("java.class.path"); String path2 = FreeMarkerWriter.class.getProtectionDomain().getCodeSource().getLo

java object用法-Java中object类的用法

问题描述 Java中object类的用法 class Student { String name; int age; public boolean equals (Object obj) { Student st = null; if(obj instanceof Student) st =(Student)obj; else return false; if(st.name==this.name&&st.age==this.age) return true; else return fa

java中看到类写在方法里面的类是什类啊

问题描述 java中看到类写在方法里面的类是什类啊 java中看到类写在方法里面的类是什类啊 void func (){class lei } 解决方案 方法内部的内部类的可见性更小,它只在方法内部可见,在外部类(及外部类的其它方法中)中都不可见了.同时,它有一个特点,就是方法内的内部类连本方法的成员变量都不可访问,它只能访问本方法的final型成员.同时另一个需引起注意的是方法内部定义成员,只允许final修饰或不加修饰符,其它像static等均不可用. 解决方案二: 内部类(匿名内部类) 解