Java----内部类、外部类、匿名对象、匿名对象的创建

内部类

        概述:

        将一个类A定义在另一个类B里面,里面的那个类A就称为内部类,B则称为外部类

        成员内部类:

        在描述事务时,若一个事物内部还包含其他事物,就可以使用内部类来表示这种结构。比如:汽车类Car中包含发动机类Engine,这时,Engine就是可以使用内部类来描述,定义在成员位置。

      访问特点:    

                内部类可以直接访问外部类的成员,包括私有成员

                外部类要访问内部类的成员,必须要建立内部类的对象

        创建内部类对象格式:

                外部类名,内部类名,对象名=new 外部类型().new 内部类型(); 

内部类例子 :

        Person类:

                外部类:人

                内部类:心脏(是否跳动)

package aaa;

public class Person {

    private boolean live=true;

    class Heart{
        public void jump(){
            if(live)
                System.out.println("还活着。");
            else
                System.out.println("不跳了。");
        }
    }

    public boolean isLive() {
        return live;
    }

    public void setLive(boolean live) {
        this.live = live;
    }
}

 测试类:

package aaa;

import java.util.Scanner;

public class Test {
    public static void main(String[] args){
    Person p = new Person();
    Person.Heart h = p.new Heart();
    h.jump();
    p.setLive(false);
    h.jump();
    }
}

匿名对象+匿名对象的创建

例子:

测试类

package aaa;

import java.util.Scanner;

public class Test {
    public static void main(String[] args){
//   接口和方法不能创建对象
//        FlyClass flyClass = new FlyClass(){
//        匿名类,父类接口是FlyClass,实现了FlyClass接口
//            public void fly(){
//                System.out.println("飞起来!");
//            }
//            @Override

//            public void down(){
//                System.out.println("下来吧!");
//            }
//        };
        showFly(new FlyCLass(){
        //类似于匿名对象,在匿名对象的基础上加上了匿名创建对象
            public void fly(){
                System.out.println("飞起来!");
            }
        });
//        Fu fu = new Fu();
//        fu.fly();
//        Person p = new Person();
//        Person.Heart h =p.new Heart();
//        h.jump();
//        p.setLive(false);
//        h.jump();
//        Scanner scanner = new Scanner(System.in);
//        int a = scanner.nextInt();
//        System.out.println(scanner.nextInt());
    }
    //创建一个fly()方法
    public static void showFly(FlyCLass f){
        f.fly();
    }
}

 接口

package aaa;

public interface FlyCLass {
    public void fly();
}

 一个类并实现了接口

 

package aaa;

import aaa.FlyCLass;

public class Fu implements FlyCLass {
    @Override
    public void fly(){
        System.out.println("飞起来");
    }
    public void down(){
        System.out.println("下来吧");
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值