常用类
非静态内部类
语法: new 外部类().new 内部类()
可以使用外部类
public class Hero {
private String name;
float hp;
float armor;
int movespeed;
class BattleScore {
int kill;
int die;
int assit;
public void legendary(){
if (kill >=8)
System.out.println(name+"超神");
else
System.out.println(name+"未超神");
}
}
public static void main(String[] args){
Hero garen = new Hero();
garen.name = "盖伦";
//BattleScore 只有在一个对象时候才有意义
//所以其实例化必须建立在一个外部类对象的基础上
BattleScore score = garen.new BattleScore();
score.kill = 9;
score.legendary();
}
}
静态内部类
与非静态内部类不同,静态内部类水晶类的实例化 不需要一个外部类的实例为基础,可以直接实例化
但不能直接使用外部类private
public class Hero {
private String name;
float hp;
float armor;
int movespeed;
private static void battleWin(){
System.out.println("battle win");
}
//敌方水晶
static class EnemyCrystal{
int hp = 5000;
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();
}
}
匿名类
注意那个分号
然后匿名类使用临时抽象类要再复写一遍。
public abstract class Item {
String name;
public abstract boolean disposable();
public static void main(String[] args){
Item i = new Item() {
@Override
public boolean disposable() {
return false;
}
};
System.out.println(i.disposable());
}
}
封装类
1.用privat属性声明私有的
public class EncapTest {
private String name;
private String number;
private int age;
public int getAge(){
return age;
}
public String getName(){
return name;
}
public String getNumber(){
return number;
}
public void setAge(int newAge){
age = newAge;
}
public void setName(String newName){
name = newName;
}
public void setNumber(String newNumber){
number = newNumber;
}
}
以上public是用与外部类访问该类成员留有的入口
通常会使用get set方法
实例访问EncapTest
public class RunEnc {
public static void main(String[] args){
EncapTest encap = new EncapTest();
encap.setAge(20);
encap.setName("约翰");
encap.setNumber("9527");
System.out.println("name:"+encap.getName()
+ " age:"+ encap.getAge()
+" number:"+ encap.getNumber());
}
}