匿名对象~~内部类
2016-11-20 21:12
211 查看
一、匿名对象概念
匿名对象是指创建对象时,只有创建对象的语句,却没有把对象地址值赋值给某个变量。二、匿名对象特点
1.创建匿名对象直接使用,没有变量名。猫类:
public class Cat { public void play(){ System.out.println("小猫咪爱玩耍"); } }
测试类:
public class Test04 { public static void main(String[] args) { //调用匿名对象的方法时直接.就可以 new Cat().play(); } }
2.在没有指定其引用变量时,只能使用一次。若还是按之前的调用,则是又创建了一个对象。
public class Test04 { public static void main(String[] args) { //调用匿名对象的方法时直接.就可以 new Cat().play(); //若再次调用则是不同的对象了 new Cat().play(); } }
3.可以作为方法接受的参数、方法返回值使用。
public class Test04 { public static void main(String[] args) { //将匿名对象作为参数传递给method方法,返回类型为Cat,调用对象方法play(); method(new Cat()).play(); } //猫玩耍的类,返回值为Cat类 private static Cat method(Cat c) { return c; } }
三、内部类
内部类:将类写在其他类的内部,可以写在其他类的成员位置和局部位置,这时写在其他类内部的类就称为内部类,通俗的说就是在类里面创建类,也就是一个事物里面包含另一个事物,其他的类是外部类。1.成员内部类
定义在外部类中的成员位置,可通过外部类对象进行访问。class 外部类{ 修饰符 class 内部类{ //代码 } }
访问方式:外部类名.内部类名 变量名=new 外部类名().new 内部类名();
外部类:Body类;内部类:Heart类。
class Body { class Heart{ public void jump(){ System.out.println("心跳"); } } }
测试类:
public class Test03 { public static void main(String[] args) { //实例化外部类对象 Body.Heart bh=new Body().new Heart(); //调用类中方法 bh.jump(); } }
2.局部内部类
定义在外部类方法中的局部位置。与访问方法中的局部变量相似,可通过调用方法进行访问class 外部类{ 修饰符 返回值类型 方法名(参数) { class 内部类{ //代码 } } }
局部内部类:
class Party { //外部类的eat方法 public void eat(){ //局部内部类Food class Food{ //局部内部类中的make犯法 public void make(){ System.out.println("在聚会上制作食物"); } } //匿名对象类调用方法 new Food().make(); } }
测试类:
public class Test03 { public static void main(String[] args) { //实例化局部内部类 Party p=new Party(); p.eat(); } }
3.匿名内部类
特点:简化问题:定义实现类、重写方法、建立实现类对象、调用方法接口:
public interface Play { //定义接口的抽象方法 public abstract void play(); }
测试类:
public class Test05 { public static void main(String[] args) { //创建Play子类对象,即new new Play(){ //重写子类方法 public void play(){ System.out.println("我喜欢出去玩"); } //调用子类方法 }.play(); } }
小结:
匿名对象使用比较多,主要是为了简化问题,简化代码。
成员内部类、局部内部类主要用于类中有类的情况。
相关文章推荐
- 面向对象_匿名内部类在开发中的应用
- Java中怎么区分匿名对象跟匿名内部类
- 匿名对象,内部类,静态内部类,static关键字
- 07 java的object类和内部类, 匿名类和匿名对象
- 黑马程序员_Java基础[18]_匿名对象、匿名内部类
- 匿名内部类使用了一个在其外部定义的对象,为什么编译器会要求其参数引用是final呢
- JavaSE 学习参考:匿名内部类和匿名对象
- 匿名对象、匿名内部类、适配器模式
- Java基础毕向东day05 对象与对象的区别,匿名内部类,函数的执行流程。
- 多态(多态概述、对象的类型转换、Object类、匿名内部类)
- java关于匿名对象和匿名内部类的解析
- java 内部类(匿名类,匿名对象,静态内部类)详解及实例
- javaSE day13 final static 匿名对象 内部类 包的声明与访问 四种访问修饰符 代码块
- java面对对象(六)--内部类、匿名内部类
- Java匿名对象与匿名内部类
- 匿名内部类使用外部定义对象时
- 匿名内部类中如果要使用外部定义的对象,参数对象应该为final型
- Java对象实例化(匿名内部类)
- 面向对象高级——Object类、包装类以及匿名内部类
- static、final、匿名对象、内部类