*继承:
    1.关键字 extends
    2.子类继承父类当中的所有非私有的属性 和 方法
    3.构造器不能被继承
    4.继承以后 子类也可以在本类当中声明自己的属性和方法 也可以重写父类的方法
    5.子类只能继承一个父类 但是java可以多层继承   爷爷--父亲--儿子
    6.继承的优点 和缺点
        优点:
        提高了代码的复用性
        提高了代码的可维护性
        缺点:
        类的耦合性增强了
        开发的原则:高内聚低耦合
        内聚:就是自己完成某件事情的能力
        耦合:类与类的关系
*this和super关键字:
    1.super:调用父类的构造器
    2.this:调用本类的构造器
    3.子类继承父类后,构造器(无论是有参数还是无参数)的第一行都默认有一个super() 
       ,一旦我们写了this或者是super其中的一个 默认的super()都会消失
    4.this和super只能存在一个
*重写:
    1.发生在父子类之间 方法名相同 参数列表(类型 个数 顺序)也相同
    2.注意:一定是方法名相同 参数列表相同 不然就是子类当中的一个普通方法
    3.遵循原则:2同 2小 1大原则
        2同:方法名、参数列表相同
        2小:返回值类型 要小于等于父类的
                抛出的异常 要小于等于父类的
        1同:访问修饰词要大于等于父类的
    4.举例 :
    父类:Person类    子类:Son类
        子类类型指向子类对象时:Son s = new Son();
                       调用的属性和方法都是子类的  
        父类类型指向子类对象时:Person p = new Person();
                        调用的属性:编译期间是父类的 运行期间也是父类的 运行期间动态绑定
                        调用的方法:编译期间是父类的 运行期间是子类的
        ==调用属性看等号左边 调用方法看等号右边 静态方法都看等号左边==
*多态的体现:
    1.父类类型指向子类对象
    2.必须要有方法的重写
    
*抽象类:
    (把某种类的共同属性抽出来)
    1.关键字:abstract ,abstract不能与static共同使用
    2.抽象类:不能被实例化
    3.抽象方法:必须由abstract修饰 没有方法体
    4.一个类继承抽象类:1)这个类也被abstract修饰 也是一个抽象类(会把抽象方法继承)
            2)这个类实现父类所有的抽象方法
    5.有抽象方法的类一定是抽象类 反之 抽象类里面不一定有抽象方法
    6.抽象类和普通类的区别:抽象类除了不能被实例化以外 其他的属性或者是行为都是一样的
*final:
    1.final可以修饰类,方法,变量。
    2.final修饰的类不可以被继承
    3.final修饰的方法不可以被覆盖(重写)。
    4.final修饰的变量是一个常量。只能被赋值一次。
      由fianl修饰的量我们叫常量 一般常量和static一起使用 一般常量是大写倾斜加粗
    5.什么时候将变量修饰成final呢?
      通常在程序中使用一些不会变化的数据.也就是常见的一些常量值.比如3.14,这个数直接使用是可以的,
      但并不利于阅读,所以一般情况下,都会被该数据起个容易阅读的名称
    6.final修饰的常量定义一般都有书写规范,被final修饰的常量名称,所有字母都大写例如:double PI = 3.14;
    如果由多个单词组成每个单词间用下划线连接MY_NAME
*访问权限词:
                 public    protected        default     private
    同一个类中           √                    √                 √        √
    同一个包不同类    √                   √                   √
    不同包子类          √                          √
    不同包中的类       √
    1.一个类顺序 package--import--class

*内部类:
    1.写在类的内部的类 会单独编译出 .class 文件 文件名以$开头
    2.成员内部类:1)成员内部类与成员变量的修饰词相同
               2)成员内部类与成员变量和成员方法优先级相同
    3.内部类里面可以访问外部类的属性 无论是不是static的
    4.局部内部类:在方法里面写的类
        如何调用局部内部类的中的方法:
    5.匿名内部类:没有类名的类 当类是抽象的时候 不能被实例化 直接实现类中的方法  现用现写 应用场景 在方法传参的时候用  非常重点