Java中内部类

编程入门 行业动态 更新时间:2024-10-27 17:22:52

Java中内<a href=https://www.elefans.com/category/jswz/34/1765347.html style=部类"/>

Java中内部类

1 非静态内部类

1.1 定义

非静态内部类可以直接在一个类里面定义,只有在外部对象存在时才有意义

1.2 语法

new 外部类().new 内部类()

2 静态内部类

2.1 定义

静态内部类的实例化 不需要一个外部类的实例为基础,可以直接实例化

2.2 语法

new 外部类.静态内部类();

2.3 使用注意

1 因为没有一个外部类的实例,所以在静态内部类里面不可以访问外部类的实例属性和方法

2 除了可以访问外部类的私有静态成员外,静态内部类和普通类没什么大的区别

package charactor;

public class Hero {
public String name;
protected float hp;

private static void battleWin(){System.out.println("battle win");
}//敌方的水晶
static class EnemyCrystal{int hp=5000;//如果水晶的血量为0,则宣布胜利public void checkIfVictory(){if(hp==0){Hero.battleWin();//静态内部类不能直接访问外部类的对象属性System.out.println(name + " win this game");}}
}public static void main(String[] args) {//实例化静态内部类Hero.EnemyCrystal crystal = new Hero.EnemyCrystal();crystal.checkIfVictory();
}

}

3 匿名类

1 定义

声明一个类的同时实例化它

2 使用说明

通常情况下,要使用一个接口或者抽象类,都必须创建一个子类

有的时候,为了快速使用,直接实例化一个抽象类,并“当场”实现其抽象方法。
既然实现了抽象方法,那么就是一个新的类,只是这个类,没有命名。
这样的类,叫做匿名类

package charactor;

public abstract class Hero {
String name; //姓名

float hp; //血量float armor; //护甲int moveSpeed; //移动速度public abstract void attack();public static void main(String[] args) {ADHero adh=new ADHero();//通过打印adh,可以看到adh这个对象属于ADHero类adh.attack();System.out.println(adh);Hero h = new Hero(){//当场实现attack方法public void attack() {System.out.println("新的进攻手段");}};h.attack();//通过打印h,可以看到h这个对象属于Hero$1这么一个系统自动分配的类名System.out.println(h);
}

}

上面h只是作为引用!匿名类是类名藏匿,不是引用藏匿,不然怎么使用呢

4 本地类

本地类可以理解为有名字的匿名类
内部类与匿名类不一样的是,内部类必须声明在成员的位置,即与属性和方法平等的位置。
本地类和匿名类一样,直接声明在代码块里面,可以是主方法,for循环里等等地方

package charactor;

public abstract class Hero {
String name; //姓名

float hp; //血量float armor; //护甲int moveSpeed; //移动速度public abstract void attack();public static void main(String[] args) {//与匿名类的区别在于,本地类有了自定义的类名class SomeHero extends Hero{public void attack() {System.out.println( name+ " 新的进攻手段");}}SomeHero h  =new SomeHero();h.name ="地卜师";h.attack();
}

}

使用说明

在匿名类中使用外部的局部变量,外部的局部变量必须修饰为final

更多推荐

Java中内部类

本文发布于:2023-11-15 10:45:32,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1598366.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:部类   Java

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!