面向对象(多态、抽象类、接口)
来源:互联网 发布:sql server 2008r2 编辑:程序博客网 时间:2024/05/18 15:30
今天休息一天,昨天上课的时候,刚开始讲父类引用指向子类对象的时候,怎么也听不进去,吸收不了知识,因为我总在想到底为什么访问变量要看左边,访问方法要看右边,总是想不通内存图里怎么走的,感觉要一点都学不下去似的,后来我也不想了,然后就死记这个结论,还算可以,能够在遇到此类的问题的时候,知道该看哪里运行哪里编译,然后就是感觉,现在的话想要把什么都弄明天有点不现实,时间和精力都不允许,所以,能快速吸收消化的就赶紧吸收了,不要因为纠结那么一点点为什么,把其他的知识点扔一边不去管,这也算是昨天上课的一点感悟吧。然后下边是昨天的总结,感觉自己语言组织能力太差了,光靠自己想东西来总结有点头疼,而且脑子会很空,所以参考着老师的总结写完了,相当于又复习一遍吧
一、多态
多态就是一个事物有多种状态,比如(水:液态、固态、气态)
多态的三个前提:
1.有继承关系
2.方法重写
3.父类引用指向子类对象
父类引用指向子类对象:
1.访问变量:编译看左边,运行看左边
2.访问成员方法:编译看左边,运行看右边
3.访问静态方法:编译看左边,运行看左边
调用静态方法:可以通过类直接访问,也可以通过
对象访问,但本质是类名访问,所以调用静态方法
不存在多态,这个是一个假象。静态方法不算方法的重写
类型提升:
向上提升:小类型向大类型转换,父类 对象名 = new 子类();
向下转型: 父类引用上进行强制转换,子类 对象名 = (子类)父类对象名;
类型提升解决了多态的弊端,父类不能访问子类的独有的方法
多态的好处和弊端:
1.提高代码的维护性,由继承保证,大量的代码写在了父类中
2.提高程序扩展性:由多态保证
3.多态中父类不能访问子类中独有的方法
二、抽象类
抽象abstract,不是具体的一个物体,属于一类,要用抽象类来定义,在以后的工作中要考虑是
用抽象还是普通类
抽象类的注意事项:
有构造方法,不能进行实例化,要由具体的子类实例化,用多态实现
抽象类不一定有抽象方法,但是有抽象方法的类一定是抽象类
抽象类的成员:成员变量可以是变量,也可以是常量
成员方法:可以是普通方法,也可以是抽象方法
抽象类的子类可以有两种,一种可以是抽象类,一种可以是普通类,但是普通类要重写父类里的抽象方法
抽象类也可以有父类
abstract不能和哪些关键字一起用?
1.private:抽象类,希望别人实现方法,被private修饰会冲突
2.final:被final修饰以后不能重写方法
3.static
三、接口
接口 interface,可以给一个类提供而外的功能,使用 implement 实现接口,也算是对继承只能单继承弊端的一个解决方法
接口中的成员只能是常量和抽象方法,要实现接口就要全部实现抽象方法
接口是能力的扩展,不会对本质产生影响
比如一个门,可以在门的基础上添加门铃,门铃就可以看作是对门能力的扩充,门铃就是一个接口
接口的注意事项:
接口主要是对能力的扩充,没有new构造方法
定义的变量在接口里会变成常量,所以标识符所有字母都要大写,有个隐藏的 public static final
java源码中很多都是用接口来写的,因为java不受行业约束
类和类的关系:
继承关系,只能单继承,不能多继承,能多层继承,不能多重继承
类和接口的关系:
实现关系,类来实现接口的方法,单实现也可以多实现
接口和接口的关系:
可以继承,多继承(没有讲)
抽象类和接口关系:
实现接口
抽象类可以有变量、常量、成员方法、抽象方法
接口只能有常量和抽象方法
一、多态
多态就是一个事物有多种状态,比如(水:液态、固态、气态)
多态的三个前提:
1.有继承关系
2.方法重写
3.父类引用指向子类对象
父类引用指向子类对象:
1.访问变量:编译看左边,运行看左边
2.访问成员方法:编译看左边,运行看右边
3.访问静态方法:编译看左边,运行看左边
调用静态方法:可以通过类直接访问,也可以通过
对象访问,但本质是类名访问,所以调用静态方法
不存在多态,这个是一个假象。静态方法不算方法的重写
类型提升:
向上提升:小类型向大类型转换,父类 对象名 = new 子类();
向下转型: 父类引用上进行强制转换,子类 对象名 = (子类)父类对象名;
类型提升解决了多态的弊端,父类不能访问子类的独有的方法
多态的好处和弊端:
1.提高代码的维护性,由继承保证,大量的代码写在了父类中
2.提高程序扩展性:由多态保证
3.多态中父类不能访问子类中独有的方法
二、抽象类
抽象abstract,不是具体的一个物体,属于一类,要用抽象类来定义,在以后的工作中要考虑是
用抽象还是普通类
抽象类的注意事项:
有构造方法,不能进行实例化,要由具体的子类实例化,用多态实现
抽象类不一定有抽象方法,但是有抽象方法的类一定是抽象类
抽象类的成员:成员变量可以是变量,也可以是常量
成员方法:可以是普通方法,也可以是抽象方法
抽象类的子类可以有两种,一种可以是抽象类,一种可以是普通类,但是普通类要重写父类里的抽象方法
抽象类也可以有父类
abstract不能和哪些关键字一起用?
1.private:抽象类,希望别人实现方法,被private修饰会冲突
2.final:被final修饰以后不能重写方法
3.static
三、接口
接口 interface,可以给一个类提供而外的功能,使用 implement 实现接口,也算是对继承只能单继承弊端的一个解决方法
接口中的成员只能是常量和抽象方法,要实现接口就要全部实现抽象方法
接口是能力的扩展,不会对本质产生影响
比如一个门,可以在门的基础上添加门铃,门铃就可以看作是对门能力的扩充,门铃就是一个接口
接口的注意事项:
接口主要是对能力的扩充,没有new构造方法
定义的变量在接口里会变成常量,所以标识符所有字母都要大写,有个隐藏的 public static final
java源码中很多都是用接口来写的,因为java不受行业约束
类和类的关系:
继承关系,只能单继承,不能多继承,能多层继承,不能多重继承
类和接口的关系:
实现关系,类来实现接口的方法,单实现也可以多实现
接口和接口的关系:
可以继承,多继承(没有讲)
抽象类和接口关系:
实现接口
抽象类可以有变量、常量、成员方法、抽象方法
接口只能有常量和抽象方法
0 0
- 面向对象(多态、抽象类、接口)
- 面向对象、多态、抽象类、接口
- JavaSE----面向对象(多态、抽象类、接口)
- Java面向对象(多态、抽象类、接口)
- Java面向对象_多态(抽象类、接口)巩固
- Java面向对象思想、类、抽象类、多态、接口
- 面向对象4_【抽象类】【接口】【多态】
- 面向对象(多态,抽象类,接口的比较)
- 9 面向对象(final关键字,多态,抽象类,接口)
- 面向对象_多态_抽象类_接口
- 面向对象_final关键字、多态、抽象类、接口总结
- 方法,面向对象,构造方法,继承,多态,抽象类,接口
- 面向接口、面向对象;接口、抽象类的理解
- 面向对象之抽象、接口、多态
- 9. 面向对象 -- 多态、抽象、接口
- 面向对象(高级)抽象类与接口的应用
- 面向对象基础指数(7)抽象类 接口
- 黑马程序员 面向对象(下) 抽象类与接口
- CSS样式表中的z-index总结
- 面向对象(代码块、继承)
- 小鑫爱数学
- 51单片机驱动HC-SR04超声波测距模块(LED1602显示结果)
- 黑马程序员——OC基础---内存管理
- 面向对象(多态、抽象类、接口)
- 图的基本存储的基本方式一
- html 属性大全
- 一维数组、二维数组
- android .9.png ”点九” 图片制作方法
- 图的基本存储的基本方式二
- 2015年大二上-数据结构-串(3)- 顺序串算法
- 图的基本存储的基本方式三
- 消息队列比较