java 内部类

一作用

1提供类更好的封装,不允许同一包中的其他类访问该类

2 内部类成员可以直接访问外部类的私有数据,外部类不能访问内部类的成员变量

3 匿名内部类适用于仅需要一次使用的类

实例一

public class Cow{

private double weight;

public Cow(){}

public Cow(double weight){

this.weight=weight;

}

//非静态内部类

private class CowLeg{

private double length;

private String color;

public CowLeg(){}

public CowLeg(double length,String color){

this.length=length;

this.color=colot;

}

//省略getter,setter方法

public void info(){

//可以直接访问外部类的weight 变量

}

}

//外部的普通方法

public void test(){

CowLeg c1=new CowLeg(1.12,"黑白相间");

c1.info();

}

public static void main(String [] args){

Cow cow=new Cow(378.9);

}

}

实例二

public class DiscernVariable{

private String prop="外部类的实例变量";

private class InClass{

private String prop="内部类实例变量";

public void info(){

String prop="局部变量";

DiscernVariable.this.prop;//类名+this+变量名访问外部类的变量;

this.prop;//访问内部类的实例变量

}

}

publilc void test(){

InClass in=new InClass();

in.info();

}

new DiscernVariable().test();


}


实例三

public class Outer

{

private int outProp=9;

class Inner{

private int inProp=5;

public void acessOuterProp(){

System.out.println("外部类的outProp值"outProp);

}

}

public void accessInnerProp(){

System.out.println(内部类的inProp值"inProp);//出现错误,不能直接访问

System.out.println("内部类的值"new Inner.inProp);

}

}

二 使用内部类

1 在外部类内部使用内部类

通过new 调用内部类调用内部类构造器来创建实例,不要再外部类的静态成员变量中使用非静态的内部类


2 在外部类以外使用非静态内部类

*使用private修饰的内部类只能在外部 类内部使用

*省略修饰符的,与外部类同一包中的其他类访问

*protected修饰的,与外部类同一包中的其他类和外部类的子类访问

* public  可以在任何地方被访问

3  使用静态内部类

比使用非静态内部类要简单很多,只要把外部类当成静态内部类的包空间即可。优先考虑使用静态内部类


三 匿名内部类

适合创建那种只需要一次使用的类

1 匿名内部类不能是抽象类 ,(要创建对象,而抽象类无法实例化)

2 不能定义构造器,(没有类名所以无法定义构造器)

interface Product{

public double getPrice();

public String getName();


}

public class AnonymousTest{

public void test(Product p){

System.out.println(p.getPrice+p.getName());

}

public static void main (String[]args){

AnonymousTest ta=new  AnonymousTest();

ta.test(new Product (){

public double getPrice(){

return 567.8;

}

public String getName(){

return "AGP显卡";

}

});

}

}


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值