引用类型变量实现的多态: 父 = 子;
就相当于 正方形是特殊的平行四边形,可以说成是 平行四边形=正方形;
但是不能把平行四边形赋值给正方形。
匿名内部类
- 匿名内部类一定在new 后面,要么继承一个类,要么实现一个接口。
- 匿名内部类是唯一一个没有构造方法的类(连名字都没有咋构造啊),系统会自动调用超类的构造方法
- 匿名内部类是局部内部类,因此,必须符合局部内部类的相关规定,如 不能定义静态变量和静态方法
package leiduixiang;
import single.Ciircle;
class Cir{
double radius;
Cir(){
}
Cir(double radius){
this.radius = radius;
}
public double getArea(){
return radius*radius*Math.PI;
}
}
abstract class AbstCirle{
abstract double getArea();
abstract double getArea(double radius);
}
public class Niming {
public static void main(String[]args){
Cir obj = new Cir(10){
double r = radius ;
public double getArea(){
return 4*r*r;
}
};
System.out.println("r = 100的表面积:"+obj.getArea());
Cir ob = new Cir(10){
/* public double getA(){
return 10;
}*/ //只能改new 类中的方法,不能从新写方法
};
System.out.println("***"+ob.getArea());
Cir oj = new Cir(10){
double r = radius ;
public double getArea(){
return 4*r*r;
}
};
System.out.println("比对:"+oj.getArea());
AbstCirle o = new AbstCirle() {
double r ;
{
r = 10; //动态初始化块
}
@Override
double getArea() {
return 0;
}
@Override
double getArea(double radius) {
return 0;
}
};
}
}
仅个人观点:我感觉匿名内部类就是重写了它所继承或者实现的类和接口。在之后的学习中我还是可能回来再次补充的。