多态:
对象的类型转换:
涉及将子类对象当做父类类型使用的情况,此种情况在java的语言环境中称为“向上转型”,例如
Animal an1 = new Cat(); Animal an1 = new Dog();
Java 提供了一个关键字instanceof ,它可以判断一个对象是否为某个类(或接口)的实例或子类实例,格式 :
对象(或者对象引用变量) instanceof类(或接口)
内部类:
成员内部类:
在一个类中除了可以定义成员变量、成员方法,还可以定义类。
在成员内部类中,可以访问外部类的所有成员,包括成员变量和成员方法;在外部类中,同样可以访问成员内部类的变量和方法。
创建内部类对象的具体语法格式如下:
外部类名.内部类名 变量名 = new 外部类名().new 内部类名();
局部内部类:
定义在某个局部范围中的类,它和局部变量一样,都是在方法中定义的,其有效范围只限于方法内部。
在局部内部类中,局部内部类可以访问外部类的所有成员变量和方法,而局部内部类中的变量和方法却只能在创建该局部内部类的方法中进行访问。
静态内部类:
静态内部类中只能访问外部类的静态成员,同时通过外部类访问静态内部类成员时,可以跳过外部类从而直接通过内部类访问静态内部类成员。
创建静态内部类对象的基本语法格式:
外部类名.静态内部类名 变量名 = new 外部类名.静态内部类名();
匿名内部类:
基本语法格式:
New 父接口(){ //匿名内部类实现部分 }
1.在调用animalShout()方法时,在方法的参数位置写上 new Animal(){},这相当于创建了一个实例对象,并将对象作为参数传给animalShout()方法。在new Animal()后面有一对大括号,表示创建的对象为Animal 的子类实例,该子类是匿名的。具体代码如下:
AnimalShout(new Animal(){})
2.在大括号中编写匿名子类的实现代码,如下:
AnimalShout(new Animal(){
Public void shout(){
System.out.println(name+”喵喵..”)
}
});