面向对象编程的三大特征: 封装:把抽象的数据【属性】和对数据的操作【方法】封装在一起,数据被保护在内部, 程序的其他部分只有通过被授权的操作【方法】才能对数据进行操作 三步:1)将属性进行私有化(private) 2)提供一个公有的(public)set方法,对属性进行判断并赋值 3)提供一个公有的(public)get方法,用于获取属性的值 set方法与构造器结合:将set方法写入构造器中,构造的同时完成赋值 继承:不同子类中的公有的属性和方法抽取出来,写在父类中,子类继承父类 本质:子类对象创建好之后,建立的查找关系 1)子类继承所有的属性和方法,非private的属性和方法可以直接访问,private的属性通过public的方法进行访问 2)子类不会继承父类的构造器,但是一定调用父类的构造器,完成父类的初始化 3)创建子类对象时,不管使用哪个构造器,默认会取调用父类的无参构造, 如果父类中没有无参构造(必须通过super指定)或super已指定某个构造器,使用该构造器 4)如果希望指定父类中的某个构造器,则调用super 5)super在使用的时候,必须放在构造器的第一行(只能用于构造方法中) 6)super()和this()都只能放在构造器的第一行,因此这两个方法不能同时使用 7)java中的所有类都是object的子类,object是所有类的基类 8)父类构造器的调用不限于父类,将一直向上追溯到object类 9)子类只能继承与一个父类,即java是单继承机制 10)不能滥用继承,子类与父类之间必须满足is-a的逻辑关系 super关键字:代表父类的引用,用于访问父类的属性、方法、构造器 1.子类中有与父类的成员同名时,访问父类中的成员,必须通过super; 2.super的访问不限于父类。 方法重写:1.子类的形参列表,方法名称和父类的完全一致 2.子类的返回类型和父类的返回类型一致,或是父类的子类 3.子类不能缩小父类的访问权限 多态:同一个事物具有不同的表现形式,建立在封装和继承的基础之上
方法多态:方法重写和方法重载
多态的向上转型:本质:父类的引用指向子类的对象
语法:父类类型 引用名 = new 子类类型();
特点:编译类型看左边,运行类型看右边
可以调用父类的所有成员;不能调用子类中特有的成员
多态的向下转型:语法:子类类型 引用名 = (子类类型)父类引用;
1)只能强转父类的引用,不能强转父类的对象
2)要求父类的引用必须指向当前目标类型的对象
3)当向下转型后,可以调用子类类型中所有的成员
java的动态绑定机制:
1.当调用对象的方法的时候,该方法会和对象的内存地址/运行类型进行绑定
2.当调用对象的属性时,没有动态绑定机制,哪里声明,哪里使用