概述
关键知识点和补充
- 封装: 隐藏内部的实现细节,对外提供公共的访问方式
继承: 子类一旦继承父类,就有权使用父类中的内容
多态: 一种事物的多种形态|多种表现形式 - 多态的前提: 继承 多态的最终体现:父类的引用指向子类的对象
- 多态: 编译看左边 运行看右边 虽然都是new的右边的东西,但是父类的引用可以指向子类对象,有多种状态,但是注意对于左边的声明,子类后面新添加的属性,和非重写方法无法访问,但是重写的方法是用子类的方法!!!
- 引用 instanceof 类型判断是否是子类 obj instanceof Abc ,返回值为ture的话就是是这个类,就可以调用这个子类的新添加的成员!!!! 向下转型,虽然是父类,但是想调用子类的新加的成员,就要判断是不是这个子类,是的话就可以调用.
面向对象的三大特性:
* 封装: 隐藏内部的实现细节,对外提供公共的访问方式
* 继承: 子类一旦继承父类,就有权使用父类中的内容
* 多态: 一种事物的多种形态|多种表现形式
多态
* 多态的前提: 类的继承|接口的实现
* 多态的最终体现:父类的引用指向子类的对象
* 如果子父类中有重写方法,多态调用的是子类中重写的方法
* 注意: 父类引用对子类的新增内容不可见
*
* 使用多态调用成员:
* 1)成员变量
* 编译运行看父类|看左边|看类型
* 2)成员方法
* 编译看父类,运行看子类
* 编译看左边,运行看右边
* 编译看类型,运行找对象
转型
* 强类型的语言
* 数据类型转型
*
* 孔子装爹:
* class KonZiDie{void teach(){做生意}}
* class KonZi{void teach(){论语} void play(){吃鸡...}}
* 一天,一个人来请孔子爹去授课,恰巧孔子爹外出,孔子就化妆装成孔子爹的样子去授课
* 化妆: 向上转型
* KongZiDie K=new KongZi();
* k.teach(); 父类引用调用的是子类中重写的方法
* 孔子就和学生约定要一起打游戏,因为孔子爹不会打游戏,需要卸妆编程孔子的样子
* 卸妆: 向下转型
* 子类类型 引用 = (子类类型)父类类型的数据;
* KongZi kz=(KongZi)k;
* kz.play(); 向下转型后就可以调用子类独有的内容了
*
* java.lang.ClassCastException 类型转换异常
* 为了避免类型转换异常的出现,介绍一个运算符 instanceof
* 引用 instanceof 类型
* 判断前面的引用是否是后面类型的一个对象|他子类对象,如果是返回true,不是返回false
例题
编译看昨天,运行看右边:
-
运行的结果:public class DuoTaiTest { public static void main(String[] args) { //父类可以访问到自己类的属性,但是访问不到子类额外添加的内容 Person stu1 = new Student(); stu1.person = "人类属性"; Student stu2 = new Student(); stu2.person = "student类的person属性"; stu2.student = "学生属性"; System.out.println(stu1.person); System.out.println(stu2.person); System.out.println(stu2.student); //属性看左边,方法看右边 stu1.speak(); stu2.speak(); stu2.speak2(); } } class Person { String person; void speak(){ System.out.println("我是父类的方法"); } } class Student extends Person { String student; void speak2(){ System.out.println("我是子类的方法2"); } void speak(){ System.out.println("我是子类的方法"); } }
人类属性
student类的person属性
学生属性
我是子类的方法
我是子类的方法
我是子类的方法2
最后
以上就是缥缈紫菜为你收集整理的多态 什么是多态 多态转型 注意事项关键知识点和补充面向对象的三大特性:多态转型例题的全部内容,希望文章能够帮你解决多态 什么是多态 多态转型 注意事项关键知识点和补充面向对象的三大特性:多态转型例题所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复