继承:
在一个已有的类的基础上,作为修改,得到一个新的类
继承的特点:
1、子类可以给直接访问父类中非私有的属性与方法
2、java中只支持单继承,不支持多继承
3、Java中支持多层继承
子类创建对象就调用一次父类的构造方法
子类构造放啊第一行有一个隐式的代码super();super()调用父类空参数构造方法
this和super 首行问题:
this和super不能并存
但子类中所有构造方法必须访问父类构造方法,不管直接还是间接
重写;
子类父类中出现了相同的方法,子类将父类的方法重新实现
注意事项:
1、子类的访问权限必须要大于等于父类方法访问权限
2、静态方法 只能覆盖静态方法
3、子类不能重写父类的私有方法
静态覆盖的是静态,非静态覆盖的是非静态
但其实静态方法,实际上已经没有覆盖的含义了
继承后,子类父类中的成员变量的变化情况
成员变量,如果子类自己有,调用自己的,自己没有找父类,如果父类没有编译失败
子类中如果调用父类的成员,使用super关键字 调用
代码块:
静态代码块
只运行一次
构造代码块
只要有新的对象产生就运行一次
局部代码块
final:最终,修饰局部变量、最后一次赋值,变成常量
成员变量只能赋值一次,终身不变
成员方法、不能被覆写
静态和非静态成员:
1、生命周期:
静态成员:随着类的加载而存在,随着类的消失而消失
普通成员:随着对象的创建而存在,随着对象的消失而消失
2、调用的区别:
静态成员:对象.成员或类名.成员
普通成员:对象.成员
3、位置的区别:
静态成员:方法区
普通成员:堆内存
4、理解上的区别
静态:多个对象共享共同一个属性
普通:每一个对象单独所拥有的
多态:
一个事物,具备的多种形态
简单的说就是:将子类类型的引用赋值给父类类型的引用
多态的前提:
1、需要继承或实现
2、子类重写父类的方法
3、父类引用指向子类对象
多态的成员特点:
成员变量:
编译:看左边父类
运行:看左边父类
成员方法:
编译:看左边父类
运行:看右边子类
静态成员方法:
编译:看左边父类
运行:看左边父类
多态的的好处和作用
提高了程序的扩展性
弊端:不能使用子类特有方法
多态案例:
向上转型:
子类转换成父类(自动转换)
作用:提高了程序的扩展性
向下转型:
父类转换成子类(强制转换)
作用:使用子类特有的方法 |
|