黑马程序员---面向对象(一)
来源:互联网 发布:淘宝关键词怎么优化 编辑:程序博客网 时间:2024/05/22 23:22
1、接口和抽象类的区别
共性:
抽象类和接口都是不断向上抽取而来的。
区别:
1,抽象类中可以定义抽象方法也可以定义非抽象方法,非抽象方法可以直接提供给子类使用。
接口中只能定义抽象方法。
2,类与类之间是继承关系,is a关系。
类与接口之间是实现关系。like a关系。
抽象类一般描述的都是一个体系is a,接口是给体系进行功能扩展like a
3,类与类之间只能单继承。
类与接口之间可以多实现。
2、多态
多态:多种形态。
多态在程序中的体现:父类或者接口的引用指向了自己的子类对象
多态的前提:
1,必须有继承或者实现的关系。
2,通常都有覆盖的操作。
多态的好处:
提高了程序的扩展性,在思想上也有不同,以前是面对一个对象调用,对象多了调用麻烦。
相当于指挥一批对象做事情,将复杂事情简单化。
多态的弊端:
多态的出现,虽然可以让前期的程序使用后期的内容。
不可以使用子类的特有内容。
向上转型
Animal a = new Cat();//向上转型(类型提升)。子类对象提升为了父类型。
提升的好处:就是提高了扩展性。隐藏了子类型。
提升的局限性:只能使用父类中的方法。 如果子类有覆盖的话,运行的是子类的内容。
向下转型
Cat c = (Cat)a;//向下转型(强制类型转换)。好处:可以使用具体子类型的特有方法。
向下转型需要注意:父类型向下转成子类型,因为子类型不唯一,所以,需要进行判断。
如何判断对象类型呢? 用到一个关键字完成,instanceof 对象 instanceof 类or接口
记住:一旦向下转型,必须先instanceof判断
记住:对于子父类转型动作,自始自终都是子类对象在做着类型的转换而已。
3、多态中成员的特点
1,成员变量。
多态调用时,对于成员变量,无论是编译还是运行,结果只参考引用型变量所属的类中的成员变量。
参考等号左边。
2,成员函数。
多态调用时,对于成员函数,
编译时,参考引用型变量所属的类中是否有被调用的方法。有,编译通过,没有编译失败。
运行时,参考的是对象所属的类中是否有调用的方法。
简单说:
3,静态函数。
简单说:
编译和运行都看左边。
4、API:Application Programming Interface应用程序接口
java对外提供的,对外暴露的公共的部分都称之为接口
共性:
抽象类和接口都是不断向上抽取而来的。
区别:
1,抽象类中可以定义抽象方法也可以定义非抽象方法,非抽象方法可以直接提供给子类使用。
接口中只能定义抽象方法。
2,类与类之间是继承关系,is a关系。
类与接口之间是实现关系。like a关系。
抽象类一般描述的都是一个体系is a,接口是给体系进行功能扩展like a
3,类与类之间只能单继承。
类与接口之间可以多实现。
2、多态
多态:多种形态。
多态在程序中的体现:父类或者接口的引用指向了自己的子类对象
多态的前提:
1,必须有继承或者实现的关系。
2,通常都有覆盖的操作。
多态的好处:
提高了程序的扩展性,在思想上也有不同,以前是面对一个对象调用,对象多了调用麻烦。
相当于指挥一批对象做事情,将复杂事情简单化。
多态的弊端:
多态的出现,虽然可以让前期的程序使用后期的内容。
不可以使用子类的特有内容。
向上转型
Animal a = new Cat();//向上转型(类型提升)。子类对象提升为了父类型。
提升的好处:就是提高了扩展性。隐藏了子类型。
提升的局限性:只能使用父类中的方法。 如果子类有覆盖的话,运行的是子类的内容。
向下转型
Cat c = (Cat)a;//向下转型(强制类型转换)。好处:可以使用具体子类型的特有方法。
向下转型需要注意:父类型向下转成子类型,因为子类型不唯一,所以,需要进行判断。
如何判断对象类型呢? 用到一个关键字完成,instanceof 对象 instanceof 类or接口
记住:一旦向下转型,必须先instanceof判断
记住:对于子父类转型动作,自始自终都是子类对象在做着类型的转换而已。
3、多态中成员的特点
1,成员变量。
多态调用时,对于成员变量,无论是编译还是运行,结果只参考引用型变量所属的类中的成员变量。
参考等号左边。
2,成员函数。
多态调用时,对于成员函数,
编译时,参考引用型变量所属的类中是否有被调用的方法。有,编译通过,没有编译失败。
运行时,参考的是对象所属的类中是否有调用的方法。
简单说:
编译看左边,运行看右边。
代码示例:
- abstract class Student {
- public abstract void study();
- public static void sleeps(){
- System.out.print("睡觉");
- }
- }
- class jichu extends Student{
- public void study()
- {
- System.out.print("学习基础");
- }
- public static void sleeps(){
- System.out.print("站着");
- }
- }
- class gaoji extends Student{
- public void study()
- {
- System.out.print("学习高级");
- }
- public static void sleeps(){
- System.out.print("趴着");
- }
- }
- class DoStudent
- {
- public void dosome(Student stu)
- {
- stu.study();
- stu.sleeps();
- }
- }
- public class duotai {
- public static void main(String[] args) {
- DoStudent ds=new DoStudent();
- ds.dosome(new jichu());//传的是子类对象
- ds.dosome(new gaoji());
- }
- }
3,静态函数。
简单说:
编译和运行都看左边。
4、API:Application Programming Interface应用程序接口
java对外提供的,对外暴露的公共的部分都称之为接口
0 0
- 黑马程序员 面向对象(一)
- 黑马程序员_JAVA_面向对象(一)
- 黑马程序员 java面向对象(一)
- 黑马程序员-------面向对象基础(一)
- 黑马程序员---面向对象(一)
- 黑马程序员--------------面向对象(一)
- 黑马程序员---面向对象(一)
- 黑马程序员--面向对象(一)
- 黑马程序员-------面向对象(一)
- 黑马程序员_JAVA_面向对象(一)
- 黑马程序员_面向对象(一)
- 黑马程序员 JAVA-面向对象(一)
- 黑马程序员_面向对象(一)
- 黑马程序员------面向对象(一)
- 黑马程序员 面向对象(一)
- 黑马程序员--面向对象(一)
- 黑马程序员---面向对象一
- 黑马程序员---面向对象一
- POJ 1008
- 俄罗斯方块小游戏的各类
- freemarker报错之十二
- Memcached常用命令及使用说明
- 静态路由模拟实验
- 黑马程序员---面向对象(一)
- Android图片旋转,缩放,位移,倾斜,对称完整示例(一)——imageView.setImageMatrix(matrix)和Matrix
- Swift简介
- shell 中数学计算总结
- SpringBatch的领域概念
- 乘法——(大数乘小数)
- java coding学习
- 第一篇日志-初学JSP
- C#使用反射访问特性