多态
- 什么是多态
同一动作作用于不同的对象所产生的不同行为。
- 什么是多态性
两种体现形态
1.方法的重写和重载
2.子类对象的多态性(可以直接应用在抽象类和接口上)
- 对象的多态性是什么?
一个对象多种形态,在Java中,子类的对象可以替代父类的对象去使用。
- 多态性种类
第一种:编译时多态性
对于多个重名方法,如果在编译时能够确定执行同名的方法中的哪一个,则称为编译时多态性。
第二种:运行时多态性
如果编译时不能确定,只有在运行时才能确定执行多个同名方法中的哪一个,则称为运行时多态。
重写
- 方法重写的规则
1.在继承关系的子类中
2.重写的方法名、参数、返回值类型必须与父类相同
3.私有方法不能继承因而也无法重写
-
重写与重载的区别
-
对象的转型
向上转型和向下转型
Pet是父类,Dog是继承Pet类的子类
例子:Pet pet1 = new Dog(“小白”,“泰迪”); //向上转型 现在Pet1 引用指向一个Dog对象
Dog dog1 = (Dog)pet1; //向下转型 现在Pet1 指向Dog对象
- final关键字
1.final修饰的类不能被继承。提高安全性,提高程序的可读性。 例如String类、System类、StringBuffer类
2.final修饰的方法不能被子类重写
3.final修饰的属性为常量。一旦初始化后,不可再被赋值。习惯上,常量用大写字符表示
例子:final double PI = 3.14;
- static关键字
定义:静态,可以用于修饰成员变量和成员函数。
使用范围:在Java类中,可用static修饰属性、方法、代码块、内部类
被修饰后的特点:随着类的加载而加载、
优先于对象存在、
修饰的成员,被所有对象所共享、
访问权限允许时,可不创建对象,直接被类调用
- 类变量
1.由类创建的所有的对象,都共用这一个对象
2.当其中一个对象对此属性进行修改,会导致其他对象对此属性的一个调用
3.类变量随着类的加载而加载,而且独一份
4.静态的变量可以直接通过"类.类变量"的形式来调用
5.类变量的加载要早于对象,所以当有对象以后,可以"对象.类变量"使用。但是"类.实例变量"是不行的
6.类变量存在于静态域中
- 类方法
1.在静态方法里只能直接调用同类中其它的静态成员(包括变量和方法),而不能直接访问类中的非静态成员。
2.静态方法不能以任何方式引用this关键字。因为静态方法在使用前不用创建任何实例对象,当静态方法被调用时,this所引用的对象根本就没有产生。
3.main() 方法是静态的,因此JVM在执行main方法时不创建main方法所在的类的实例对象,因而在main()方法中,我们不能直接访问该类中的非静态成员。
- 类变量和类方法的特点
1.随着类的加载而加载,只加载一次
2.类属性作为该类各个对象之间共享的变量