一、多态

  • 一个对象可以根据发送对象的不同而采取不同的行为方式;

  • 一个对象的实际类型是确定的,但指向对象的引用类型可以有很多(父类,有关系的类)

  • 多态存在的条件

    1. 继承关系;
    2. 子类重写父类方法;
    3. 父类引用指向子类对象。
  • 注意:多态是方法的多态,属性没有多态。

二、抽象

//abstract 抽象类:类 extends  ;   单继承~
//接口可以多继承
public abstract class Action {

    //约束~有人帮我们实现
    //abstract 抽象方法,只有方法名,没有方法的实现
    public abstract void doSomething();

    //1. 不能new抽象类,只能靠子类实现它:约束!
    //2. 抽象类中可以写普通的方法
    //3. 抽象方法必须在抽象类中
    //抽象的抽象:约束!

    //思考题?  不能new,那么存在构造器吗?  存在。
    //抽象类存在的意义。  将头部方法抽象出来,提升开发效率。
}

三、接口

  • 普通类

  • 抽象类

  • 接口:只有规范。自己无法写方法专业的约束!约束和实现分离:面向接口编程

  • 接口就是规范,定义的是一组规则。

  • 接口的本质是契约,就如人间的法律,制定好大家都遵守。

  • OO的精髓,是对对象的抽象,最能体现这一点的就是接口。设计模式所研究的,实际上就是如何合理的去抽象。

  • 关键字:interface。

  • 作用

    1. 约束;
    2. 定义一些方法,让不同的人实现;
    3. 方法默认: public abstract;
    4. 常量默认:public static final;
    5. 接口不能被实例化,接口中没有构造方法;
    6. implements可以实现多个接口;
    7. 必须要重写接口中的方法。

四、N种内部类

public class Outer {

    private int id;

    //局部内部类
    public void out(){
        System.out.println("这是外部类的方法");

        class outA{

        }
    }

    //内部类
    public class Inner{
        public void in(){
            System.out.println("这是内部类的方法");
        }

        //获得外部类的私有属性
        public void getID(){
            System.out.println(id);
        }
    }
}

//一个Java类中可以有多个class类,但只能有一个public class类
class A{
    //匿名类
}