Java内部类:

Java内部类:

内部类:

内部类是指在一个外部类内定义的类,按照是否有类名分为有名内部类和匿名内部类。全局有名内部类的使用方式类似于全局变量;局部有名内部类的使用方式类似局部变量——它们都有固定的使用范围。

有名内部类:

public class Body {



    public class Heart{

        public void beat() {
            System.out.println("在跳动*******");
        }
    }



}
public static void main(String[] args) {
        Body body = new Body();

        //有名内部类实例化的方式
        Heart heart = body.new Heart();

        TestInnerClass tc = new TestInnerClass();
        tc.callSomeBody();
    }

有名内部类在实际中运用不多。

匿名内部类:

匿名内部类由于没有类名而不能单独存在,定义匿名内部类的同时须直接实例化该类,其语法格式如下:

Phone phone = new Phone() {

            {
                System.out.println("hello 匿名内部类!!");    
            }

            @Override
            public void telphone() {
                System.out.println("Phone 的匿名内部类 中打电话!!");
            }

        };

首先结尾的花括号必须有分号,其中可以有代码块。

匿名内部类特点:

1.匿名内部类一定是接口的实现类(该实现类仅能实现一个接口)或类(普通类或抽象类)的子类,其中new 关键字后面的类名或接口名即是该匿名内部类继承的父类或实现的接口;
2.匿名内部类不能自定义构造方法,但是可以通过非静态代码块初始化成员变量;
3.匿名内部类一定不能是抽象类;
4.可以在匿名内部类中添加新的属性和方法,但是这些属性和方法不能被上转型对象所调用,只能被非上转型对象方式创建的匿名内部类对象所调用。

Date date = new Date() {
    private String getNowStrTime() {
        DateFormat df = new SimpleDateFormat("yy/MM/dd HH:mm:ss SSS EEEE");
        return df.format(new java.util.Date());
    }
};
System.out.println("------------------>" + date.getNowTime());

上面的内部类中就不能实现getNowStrTime()中的方法,因为你可以发现这里是一个上转型对象。上转型对象只能重写父类中的方法,而不能调用新的方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值