您的位置:首页 > 其它

匿名对象~~内部类

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();
}
}


小结:

匿名对象使用比较多,主要是为了简化问题,简化代码。

成员内部类、局部内部类主要用于类中有类的情况。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: