一:面向对象的特性:多态性
1.多态性指的是什么?多态性可以理解为一个事物的多种表现形态。
1)方法的重写与重载 2)子类对象的多态性
虚拟方法的调用:通过父类的引用指向子类的对象实体,当调用方法时,实际执行的是子类重写父类的方法。
2.子类对象的多态性使用的前提:1.要有类的继承 2.要有子类对父类方法的重写
3.程序分为编译状态和运行状态。
对于多态性来说,编译时,看左边,将引用变量类型理解为父类
运行时,看右边,关注与真正的实体:子类的对象,那么执行子类重写的
instanceof:
格式:对象 a instanceof 类A:判断对象a是否时类A的一个实例,是的话返回true。
若a时A类的实例,那么a也一定是A类父类的实例
4.子类对象的多态性,并不适用于属性
二:equals()
1)只能处理引用类型的变量
2)在Object类,发现equals()仍然比较的两个引用变量的地址值是否相等
java.lang.Object类,是所有类的根父类
三:包装类(Wrapper)
8种基本数据类型对应着一个类。此类即为包装类。
基本数据类型 包装类 及String类之间的转换
JDK5.0以后,自动装箱与拆箱
基本数据类型、包装类------>String类:调用String类的重载valueOf(Xxx x)方法
String类------>基本数据类型、包装类:调用包装类的重载parseXxx(String str)方法
四、final关键字
1、final标记的类不能被继承。
2、final标记的方法不能被重写。
3、final标记的变量(成员变量或局部变量)即称为常量。名称大写,且只能被赋值一次。
注:final标记的成员变量必须在声明的同时或在每个构造方法中或代码块中显示赋值,然后才能使用。
五、抽象类abstract:抽象的,可以用来修饰类、方法
1、abstract修饰类:抽象类
1)不可被实例化
2)抽象类拥有构造器(凡是类都有构造器)
3)抽象方法所在的类,一定是抽象类。
4)抽象类中可以没有抽象方法。
2、abstract修饰方法:抽象方法
1)格式:没有方法体,包括{}, 如: public abstract void eat();
2)抽象方法只保留方法的功能,具体的执行,交给继承抽象的子类,有子类重写次抽象方法。
3)若子类继承抽象类,并重写了所有的抽象方法,则此类是一个“实体类”, 即可以实例化。
4)若子类继承抽象类,没有重写了所有的抽象方法,意味着此类仍有抽象方法,则此类必须声明为抽象类。
注:abstract不能用来修饰属性、构造器、private、final、static。
六、接口(interface)是与类并行的一个概念
1、接口可以看成一个特殊的抽象类。是常量与抽象方法的一个集合。
常量:所有常量都用public static final定义(也可以不写,会默认)
抽象方法:所有方法都用public abstract修饰。
2、接口没有构造器。
3、接口定义的就是一种功能。次功能可以被类所实现(implements)。
4、实现接口的类,必须重写所有抽象方法(类似于抽象类)。
注:继承并实现 : class CC ectends DD implentents AA
5、类可以实现多个接口。
6、接口于接口之间也是继承关系, 而且可以实现多继承
七、内部类
类的第5个成员,内部类
1.相当干说,我们可以在类的内部再定义类。外面的类外部类。里面定义的类,内部类
2.内部类的分类:成员内部类(声明在类内部且方法外的) vs 局部内部类(声明在类的方法里)3.成员内部类
3.1是外部类的个成员: D可以有修饰符(4个) astatic final
3.2具体类的特点: pabstract②还可以在其内部定义属性、方法、构造器
4.局部内部类,
5.关于内部类,大家掌握三点
1、创建成员内部类的对象
中如何区分调用外部类、内部类的变量
2、如何区分外部类,内部类