1.多态
1)重写:发生父类和子类之间 子类重写父类的方法 添加自己新的功能
2)重载:发在一个类中 方法的名字相同 参数列表不同(个数 类型 顺序)
和返回值无关(构造方法重载 和 成员方法重载)
3)多态的运行机制:
在类编译阶段,编译器会检查类型是否匹配(检查声明类型、方法等)。
在运行阶段,JVM会调用实例的对应方法,先检查父类方法,后检查子类方法。
然后编译器会检查实例声明的类型。
4)举例
父类:
public class Shape {
public double area() {
return 0;
}
}
子类:
public class Rectangle extends Shape{
private double l, h;
public Rectangle(double l, double h) {
this.l = l;
this.h = h;
}
// Area
public double area() {
return l * h;
}
public double area(int l, int h) {
return l * h;
}
}
2.static
1)可以修饰变量 方法 内部类 被称为 静态变量 静态方法 静态内部类
2)在类里定义static的属性 方法 是与类相关的 和对象无关 所以也称 类属性
类方法
3)可以通过类名去调用静态的属性和静态方法 类名.方法名/属性名
4) 静态属性是属于类的 所以是所有对象共享的 普通数据成员是每个对象都有自已
的一 套数据成员
5)静态成员的初始化是在类加载的时候 普通数据成员初始化new对象的时候
程序运行是先加载类 碰到 new对象的时候才会初始化普通数据成员
6)静态方法里不能使用非静态的变量
非静态的方法里可以使用静态变量
3.单例模式(Singleton)
实现功能 :无论在任何情况下都得到类的一个实例
特点:1.定义一个本类 私有静态属性
2.构造方法似有
3.提供一个公有的对外访问的方法
代码:
public class Singleton {
private static Singleton ton;//私有类外不能访问 属于类
//类外不能new对象
private Singleton(){
}
//对外访问的方法 获取Singleton类对象的唯一途径
public static Singleton getInstance(){
if(ton==null){
ton=new Singleton();
}
return ton;
}
}