首页 > 代码库 > Java之内部类
Java之内部类
内部类分为:
局部内部类:
局部内部类就是在类的方法中定义的类。
注意:因为局部内部类的只能在其所在的方法中访问,所以局部内部类不能使用访问控制权限和static修饰符。
例:
public class LocalInnerClass{ public static void main(String[] args){ class test{ void print(){ System.out.println("你好局部内部类") ; } } new test().print() ;//创建局部内部类的对象,并且调用实例方法print。 } }
成员内部类——非静态内部类:
注:
1. 非静态内部类可以当做外部类的实例成员,所以它可以使用任意的访问控制符如:private、protected、public等修饰。
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 = color ; } public void info(){ //用来显示 System.out.print("当前牛仔裤颜色是:"+color+" 长:"+length) ; } } public void test(){ CowLeg cl = new CowLeg(15,"blue") ; //创建内部类的实例 cl.info() ; //调用成员方法 System.out.println(" 宽:"+weight) ; } public static void main(String[] args){ new Cow(10).test() ; //创建Cow实例调用成员方法 } }
成员内部类——静态内部类:
注:
1.静态内部类可以当做外部类的类成员。
2.静态内部类不能访问外部类的实例成员,只能访问外部类的类成员。
3.静态内部类可以拥有类成员或实例成员。
例:
public class StaticInnerClassTest{ //创建静态内部类 static class StaticInnerClass{ private static int age ; //定义年龄 public StaticInnerClass(){ //无参构造 } public StaticInnerClass(int age){ this.age = age ; } public void accessOuterProp(){ //用来显示成员变量 System.out.println(age) ; } } public static void main(String[] args){ new StaticInnerClassTest.StaticInnerClass(15).accessOuterProp() ;//创建静态内部类的实例并且调用其成员方法accessOuterProp。 } }
匿名内部类:
匿名内部类主要是用于需要只创建一次使用的类。
注:
在Java8之前,Java要求被局部内部类、匿名内部类访问的局部变量必须使用final修饰,从Java8开始这个限制被取消了,Java8更加智能:如果局部变量被匿名内部类访问,那么该局部变量相当于自动使用final修饰。
例:
interface Product{ public void getPrice() ; } public class AnonymousTest{ public static void main(String[] args){ Product pd = new Product(){ public void getPrice(){ System.out.println("100元") ; } } ; pd.getPrice() ; } }
Java之内部类
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。