精华内容
下载资源
问答
  • 内部类: 定义在A类中的B类就是内部类,B...创建内部类对象 方法一 先获取内部类对象再调用方法 Outer out = new Outer(); 外部类对象.new 内部类构造方法 Outer.Inner in = out.new Inner(); in.play(); 方...

    内部类:

    定义在A类中的B类就是内部类,B类在A类中的地位和其他成员相同,意思就是说可以相互调用 

    优点:通过内部类可以让java间接的实现多继承

    创建内部类的对象

    方法一
    先获取内部类对象再调用方法
    Outer out = new Outer();
    外部类对象.new 内部类构造方法
    Outer.Inner in = out.new Inner();
    in.play();
    
    方法二
    借助于外部类方法实现内部类方法的调用
    Outer out = new Outer();
    out.show();
    class Outer{
    	int age = 10;
    	class Inner{//内部类
    		int height =  20;
    		public void play() {
    			age+=10;
      	 System.out.println("Inner - play"+ age);
    		}
    	}
    	
    	public void show() {
    		System.out.println("Outer - show");
    		//相当于再使用Inner
    		Inner in= new Inner();
    		in.play();
    	}
    }
    

    局部内部类:

    定义:在一个类中方法中的类


    作用范围:从定义它开始到所在方法的结束
    作用:既保证了代码的私有化,又对代码进行了整理,增加了代码的可读性,操作性

    •  形式:
    class 外部类名{
        外部方法(){
            内部类名{
                内部方法(){
                    
                }
            }
        }
    }
    

    匿名内部类

    匿名内部类(对象):定义在一个类方法中的匿名子类 对象,属于局部内部类
    匿名内部类的作用:用于类的私有化,只让外部类看

    研究匿名对象,匿名子类对象
    class Text1 {
    	public void text1Method() {
    		System.out.println("text1Method");
    	}
    }
    
    class SubText1 extends Text1 {
    	public void text1Method() {
    		System.out.println("SubText1-Method");
    	}
    }
    

    创建匿名对象,完成方法的调用

    new Text1().text1Method();
    

    创建匿名子类对象

    •  方法一 使用已有的子类声明子类对象,并调用方法
    •  应用场景:现成的子类可以用很多次,相同的功能需要多次使用的时候
    new SubText1().text1Method();
    
    •  方法二:直接创建没有名字的Text1类的匿名类对象
    构成:new 父类的名字/父类接口的名字+()+{
        匿名子类的执行体
    };
    
    •  场景:只能使用一次,使用完立即释放,每次都使用不同的功能
    Text1 t = new Text1() {
    			// 重写的Text1中的方法
    			public void text1Method() {
    				System.out.println("匿名");
    			}
    
    			// 子类特有的方法
    			public void bark() {
    				System.out.println("bark");
    			}
    		};
    

    研究匿名内部类作为参数与返回值

    作为参数

    // 普通的匿名对象作为参数
    	public void textCanshu1() {
    		System.out.println(new Text1());
    	}
    
    
    	// 测试匿名内部类对象作为参数
    	public void textCanshu2() {
    		
    		System.out.println(
    
    				new Text1() {
    					public String xiuxiuxiu() {
    						System.out.println("嘟嘟嘟");
    						// com.qinafeng.text.Out$3@4e25154f
    						return "dididi";
    					}
    				}.xiuxiuxiu());
    	}
    

    作为返回值

    //普通的匿名对象充当返回值
    	public Text1 textFanhuizhi1() {
    		return new Text1();
    	}
    
    //匿名内部类充当返回值
    	public Text1 textFnhuizhi2() {
    		return new Text1() {
    			public void xiuxiuxiu() {
    				System.out.println("嘟嘟嘟");
    			}
    		};
    	}
    

     

    展开全文
  • 首先,如果你要在外部类中创建内部类对象,直接new就行。62616964757a686964616fe78988e69d8331333363383334如果你要在这个外部类之外调用。不好意思必须通过接口调用。至于你提的问题,java中好像没这么玩的。下面...

    首先,如果你要在外部类中创建内部类对象,直接new就行。62616964757a686964616fe78988e69d8331333363383334

    如果你要在这个外部类之外调用。不好意思必须通过接口调用。

    至于你提的问题,java中好像没这么玩的。下面是我以前学习时候的代码。贴出来你研究下

    public class Outer {

    public static IA test() {

    String addr = "北京";

    class Inner implements IA {

    private int index;

    @Override

    public void fun() {

    System.out.println("局部内部类的实例方法被调用,访问类中实例属性 index=" + index);

    }

    public Inner(int index) {

    this.index = index;

    }

    }

    Inner inner = new Inner(100);

    return inner;

    }public interface IA {

    //接口中必须有你要从外界调用的方法;

    void fun();

    }

    public class test {

    展开全文
  • 局部内部类可以在方法体内部直接创建对象局部内部类不能用访问控制符和static关键字修饰。 局部内部类可以使用所在方法体的局部变量,但该局部变量必须用final修饰(这是因为局部内部类使用方法中的局部变量时会...

    局部内部类

    局部内部类:定义在外部类成员方法方法体中的类。

    1. 局部内部类只能在方法体内部使用。
    2. 局部内部类可以在方法体内部直接创建对象。
    3. 局部内部类不能用访问控制符和static关键字修饰。
    4. 局部内部类可以使用所在方法体的局部变量,但该局部变量必须用final修饰(这是因为局部内部类使用方法中的局部变量时会将其值拷贝一份放入类中,若局部变量值发生变化,而内部类中仍旧用原来的值计算,则会造成数据的不一致性问题)。

    举例:
    局部内部类

    public class AreaOuter {
        private int num=1;
        public void print(){
            //定义局部变量,必须用final修饰
            final int cnt=2;
            //定义局部内部类
            class AreaInner{
                private int num=3;
                public void print(){
                    System.out.println("局部内部类中的num:"+this.num);
                    System.out.println("局部变量cnt:"+cnt);
                    System.out.println("外部类中的num:"+AreaOuter.this.num);
                }
            }
            AreaInner ai=new AreaInner();
            ai.print();
        }
    }
    

    测试类

    public class AreaTest {
        public static void main(String[] args) {
            AreaOuter ao=new AreaOuter();
            ao.print();
        }
    }
    

    结果如下
    在这里插入图片描述

    匿名内部类

    匿名内部类可以当作一种没有名称的类。当某一个接口或类的实现需要被使用一次时,如果我们新建一个类实现这个接口或者类,就会增加内存的开销。而如果我们使用匿名内部类,则无需创建新的类,达到同样的目的且减少了代码的冗余。

    下面通过回调模式举例匿名内部类的作用。

    回调模式是指——如果一个方法的参数是接口类型,则在调用该方法时,需要创建并传递一个实现此接口类型的对象;而该方法在运行时会调用到参数对象中所实现的方法(接口中定义的)。

    在此先定义一个接口AnonymousInterface

    public interface AnonymousInterface {
        public abstract void print();
    }
    

    再定义个以接口类型为参数的test方法

    public class AnonymousTest {
        public static void test(AnonymousInterface ai){
            ai.print();
        }
        public static void main(String[] args) {
            
        }
    }
    

    此时如果希望在mian方法中调用test方法,则需要一个实现了AnonymousInterface接口的类的对象。
    (1)若不使用匿名内部类,则需要新建一个实现该接口的类,并将该类对象作为形参传递。如下。

    实现该接口的类

    public class AnonymousImpl implements AnonymousInterface{
        @Override
        public void print() {
            System.out.println("自定义实现了该接口的类");
        }
    }
    

    main方法

    public class AnonymousTest {
        public static void test(AnonymousInterface ai){
            ai.print();
        }
    
        public static void main(String[] args) {
            //新建AnonymousImpl对象作为实参
            AnonymousTest.test(new AnonymousImpl());
        }
    }
    

    结果如下
    在这里插入图片描述
    (2)使用匿名内部类

    匿名内部类的语法格式:接口/父类类型 引用变量名 = new 接口/父类类型() { 方法的重写 };

    修改main方法如下

    public class AnonymousTest {
        public static void test(AnonymousInterface ai){
            ai.print();
        }
    
        public static void main(String[] args) {
            //使用匿名内部类作为形参
            AnonymousTest.test(new AnonymousInterface(){
                @Override
                public void print() {
                    System.out.println("使用匿名内部类");
                }
            });
        }
    }
    

    在此匿名内部类可以通俗地表示为新建接口类型的对象并重写方法(当然接口是不能实例化的)。
    结果如下
    在这里插入图片描述

    展开全文
  • 局部内部类

    2019-10-08 00:34:57
    访问:可以在包含局部内部类的方法中直接创建局部内部类对象调用局部内部类的成员。 注意:局部内部类只能访问所在函数的final属性。 匿名内部类 匿名内部类:就是没有类名字的内部类。 匿名内部类作用:...

    局部内部类概述:包含在外部类的函数中的内部类称之为局部内部类。

    访问:可以在包含局部内部类的方法中直接创建局部内部类的对象调用局部内部类的成员。

    注意:局部内部类只能访问所在函数的final属性。

     


    匿名内部类

    匿名内部类:就是没有类名字的内部类。

    匿名内部类作用:简化内部类书写。

    匿名内部类的前提:必须继承一个父类或者是实现一个接口。

    匿名内部类的格式: 

    new 父类或者接口(){ 执行代码….};

    class Outer{
    	class Inner
    	{
    		public void show(){
    			System.out.println("内部类的show方法");
    		}
    	}
    	public void print(){
    		new Inner().show();
    	}
    }
    

     


     

    转载于:https://www.cnblogs.com/hyit/articles/4895186.html

    展开全文
  • ` ⒈ 内部类对象可以访问创建它的对象的实现,包括私有数据;  ⒉ 内部类不为同一包的其他类所见,具有很好的封装性;  ⒊ 使用内部类可以很方便的编写事件驱动程序;  ⒋ 匿名内部类可以方便的定义运行时回调; ...
  • B:在局部位置,可以创建内部类对象,通过对象调用内部类方法,来使用局部内部类功能 面试题: 局部内部类访问局部变量的注意事项? A:局部内部类访问局部变量必须用final修饰 B:为什么呢? 局部变量是...
  • B:在局部位置,可以创建内部类对象,通过对象调用内部类方法,来使用局部内部类功能。 面试题: 局部内部类访问局部变量的注意事项 A:局部内部类访问局部变量必须用final修饰 B:为什么呢? 因为局部变量会...
  • 1 package Demo519; 2 /* 3 类的第五个成员,内部类 4 1.在类的内部在定义类 5 2.内部类的分类:成员方法内部类(放在方法外) ...如何创建内部类的对象 ...局部内部类的使用 9 */ 10 public class Test...
  • 静态内部类 定义:定义在方法以外类以内的内部类被static修饰 创建对象语法:外部类名.内部类名=new 外部类名.内部类名();...创建局部内部类的对象,需要在定义它的方法内部完成对象的创建,同...
  • 内部类: 成员内部类 :跟成员变量的位置是一样的 ...局部内部类 :定义在方法以内的内部类 匿名内部类 : 1.内部类可以访问外部类的私有成员,而不破坏封装 /* 成员内部类的实例过程 */ package p1; public class TestM...
  • 内部类 为什么要有内部类? 1.提高类的安全性 2.防止外界创建对象 什么情况下可以不让外界创建对象? 1.抽象类 2.接口 ...2.局部内部类 3.静态内部类 4.匿名内部类 内部类的特点: 1.外部类也可以直...
  • //外部类怎么访问内部类成员(创建内部类对象) public void function0() { System.out.println("我是外部类里的方法!!!"); Inner1 inner1 = new Inner1();//外部类访问内部类 //inner1.function(); int a ...
  • java 局部内部类总结

    2020-11-11 17:06:39
    记:内部类的分类: 1、成员内部类;...在方法中创建局部内部类之后,直接在方法中创建局部内部类对象。 三、如何调用局部内部类创建外部类对象,用外部类对象直接调用局部内部类所在的方法即可。 四、合
  • JAVASE基础模块十二(成员内部类 局部内部类 匿名内部类) 内部类 内部类 将类A定义到类B中 那么这个类称之为内部类 类B称之为外部类 根据内部类定义的位置分为 成员内部类和局部内部类 成员内部类:就是把内部...
  • 一、内部类 1、概述 把类定义在其他类的内部 ...局部位置(局部内部类) 2、成员内部类,外界如何创建对象(一般内部类就是不让外界访问) 外部类名.内部类名 对象名 = 外部类对象.内部类对象 3、成员内部类,...
  • 文章目录局部内部类:局部内部类注意的事项:匿名内部类匿名内部类格式匿名内部类本质常用类-Object 局部内部类: 在局部位置中定义的类 局部内部类注意的事项: 局部内部类的成员可以直接访问外部类的成员,包括私有 ...
  • 局部匿名内部类对象:接口/抽象类/普通类 变量名 = new 接口/抽象类/普通类(){}; 作用 :创建接口的实现类对象/抽象类的子类对象/普通类的子类对象 {定义字段,构造方法,普通方法} 中 写类的定义 ex: public...
  • 访问:可以在包含局部内部类的方法中直接创建局部内部类对象调用局部内部类的成员。 注意:局部内部类只能访问所在函数的fanal属性。 【正在看本人博客的这位童鞋,我看你气度不凡,谈吐间隐隐有王者之气...
  • 一、什么是内部类? 在一个类的内部在定义一...外部类的一个实例部分,创建内部类对象时,必须依赖外部类对象。 外部类.内部类 变量名 = new 外部类().new 内部类(); 外部类 变量1 = new 外部类(); 外部类.内部类
  • 1.定义:把类定义在其他类的内部,这个类就被称为内部类。 class Outer{ class Inter{ } } 2.内部类的访问特点 (1)内部类可以直接访问外部类的...* 局部位置:在局部位置定义类,被成为局部内部类。 cl...
  • 内部类:一个类定义在另外一个类的内部,那么该类就称作为内部类。...方式一:在外部类提供一个方法创建内部类对象进行访问。 方式二:在其他类直接创建内部类对象。 格式:外部类.内部类 变量名 = ne
  • Demo01: ... /*内部类:一个事物的内部包含另外一个事物... 局部内部类(包含匿名内部类) 成员内部类的使用: 1.间接调用:通过创建外部类对象,调用外部类方法使用内部类 2.直接调用,直接创建一个内部类对象 ...
  • 其中,在调用时候,也是只能通过这个局部内部类的所属方法来调用它: 小结类的权限修饰关键字: 局部内部类访问其所属方法的局部变量,需要使用final关键字修饰,这边final可以不写,写了即为常量,只要...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,611
精华内容 644
关键字:

局部内部类创建对象