1,多态
封装
1,私有化 --- 保证数据安全性
2,抽取成方法 --- 提高代码的复用性和可维护性
继承
可以让类跟类之间产生关系
可以抽取重复的代码到父类中。
是多态的前提
多态
多种形态
概述:
Student s = new Student();
真正的对象: new Student();
左边的s:仅仅是一个接收变量而已。
因为要方便以后的使用。
Person p = new Student();
//赋值给父类型的变量。
//认为:父类类型的范围要比子类类型要大
总结:
不管是Student s = new Student();还是 Person p = new Student();
对象永远是学生对象。
只不过第一种方式,学生对象是学生形态。
第二种方式学生对象是人形态。
简单来说:
同一个对象可以用不同的数据类型去接收。
,2.多态中成员的访问特点
成员变量:
编译看左边,运行看左边
成员方法:
编译看左边,运行看右边
问:
1.编译看左边到底看什么?
其实就是看父类中是否有这个变量或者方法,如果没有直接报错
2.运行看左边/运行看右边,看的是什么?
如果是变量,运行看左边,输出的是左边这个类里面变量的值
如果是方法,运行看右边,实际上运行的方法是右边那个类中的方法。
3.多态的好处和弊端
问:
1.以后创建对象就是使用
Fu f = new Zi();
//不是的。因为如果用了这样的格式,不能使用子类的特有功能,很麻烦。
以后创建对象还是跟以前一样。
好处:
如果你写一个方法,想让这个方法既能接收A类,又能接收B类。
在以前,只能写两个方法
public static void method(A类){
}
public static void method(B类){
}
现在学习了多态,那么可以把这两个方法合并成一个方法
public static void method(父类){
}
4.多态的向上转型和向下转型
向上转型:
就是把一个小类型赋值给一个大的类型。
Person p = new Student();
向下转型:
就是把一个大的类型转换为一个小类型。
目的:
为了使用子类的特有功能。
格式:
Person p = new Student();
Student s = (Student)p;
|
|