OOP概念回顾(一)
来源:互联网 发布:qq刷红包 源码 编辑:程序博客网 时间:2024/05/16 10:25
1. OOP中的基本概念
面向对象的三大特性:
(1) 封装:java是以类为基础的,所有的属性和方法都封装在类中,不像C++在类外还可以定义函数。
(2) 多态:表面来看是多种状态的意思。
(3) 继承:继承可以使子类具有父类的各种属性和方法,而不用再次编写相同的代码。
2. 类和对象
对象是对问题领域中事件的抽象。对象具有以下特征:
(1) 万物皆对象。
(2) 每个对象都是唯一的。(hachcode)
(3) 对象具有属性和行为。
(4) 对象具有状态。(某个瞬间对象的各个属性取值)
(5) 每个对象都是某个类的实例。
类是一组具有相同属性和行为对象的模板。面向对象编程的主要任务就是定义对象模型中的各个类。
(1) 类是一种类型:即一种引用类型。
(2) 类是元数据:描述数据的数据,数据在面向对象领域里以对象的形式存在,类是对象共有属性和方法的抽象描述。
Java程序是各种对象相互作用,而不是类相互作用。
3. 封装
当属性前面用private修饰时,表示该属性不能被其他类访问和修饰,它只能被本类访问和修改,范围限制在本类内。
封装有两个方面:一方面是数据隐藏,另一方面就是让实现细节不可见,即实现的细节隐藏。
4. 方法重载
方法名相同,参数不一致,成为重载。
重载必须满足以下条件:
(1) 方法名必须相同。
(2) 参数(参数类型、个数和顺序)不同。
(3) 返回类型可以不同。
5. 创建和初始化对象
构建好类只是创建了构建对象的模板。可以通过new操作符来快速地构建出对象。
New有以下作用:
(1) 作为对象分配内存空间,将对象的实例变量自动初始化为其变量类型的默认值。
(2) 如实例变量显示初始化,则将初始化值赋给实例变量。
(3) 调用构造方法。
(4) 返回对象的引用。
6. 构造方法
与类名同名并且没有返回值得方法。方法有什么作用,构造方法就有什么作用,只是构造方法的作用在创建对象的时候生效,一般放置在属性初始化代码。
构造方法只能通过以下方式被调用:
(1) 当前类的其他构造方法通过this语句调用。
(2) 当前类的子类构造方法通过supper语句调用它。
(3) 在程序中通过new语句调用。
构造方法重载
(1) 假如在一个构造方法中使用了this语句,那么它必须为构造方法的第一条语句。
(2) 只能在构造方法中用this语句来调用类的其他构造方法,而不能在实例方法中用this语句来调用类的其他构造方法。
(3) 只能用this语句来调用其他构造方法,而不能通过方法名来直接调用构造方法。
7. 继承
注意事项
(1) 构造器不能被继承,方法和实例变量可以继承。
(2) 子类构造器隐式地调用父类的默认无惨构造器。
(3) 如果父类中没有定义无参构造器,只定义了有参构造器,那么子类构造器必须显示调用父类的有参构造器,且必须放在第一条语句。
(4) This()和Super()在构造器中必须为第一条语句,且不能同时出现。
(5) 父子类同包,子类继承父类中public、protected和默认访问级别的成员变量和成员方法;父子类不同包,子类继承父类中public、protected的成员变量和成员方法。
继承现象总结
(1) 子类重写父类方法,调用子类方法。
(2) 子类属性与父类同名
8. 方法覆盖
方法覆盖即方法重写,覆盖只存在于子类和父类中。
静态方法:静态方法不能被覆盖
(1) 父类的静态方法不能被子类覆盖为非静态方法。
(2) 子类可以定义与父类的静态方法同名的静态方法,以便在子类中隐藏父类的静态方法。
(3) 父类的非静态方法不能被子类覆盖为静态方法。
私有方法:私有方法不能被子类覆盖
抽象方法:抽象方法不能被覆盖
(1) 父类的抽象方法可以被子类覆盖为非抽象方法:子类实现父类抽象方法。
(2) 父类的抽象方法可以被子类覆盖为抽象方法:重新声明父类的抽象方法。
(3) 父类的非抽象方法可以被子类覆盖为抽象方法。
9. 多态
同一操作作用于不同的对象,可以有不同的解释,产生不同的结果。多态的概念也可以被称为“一个接口,多个方法”。
- OOP概念回顾(一)
- 一、OOP概念
- JAVA OOP(一)——OOP概念,类与对象
- OOP概念
- oop回顾 final
- php--oop笔记(一)
- oop(一)基础知识总
- OOP with JavaScript(一) OOP的基本语法
- java回顾(一)
- 回顾(一)
- Android回顾(一)
- oracle回顾(一)
- JAVA回顾 (一)
- Android回顾(一)
- Ext OOP概念编程.
- C#中的OOP概念
- AOP OOP概念问题
- JAVA核心技术卷一重要概念回顾(持续更新中)
- puppet基础学习(一)
- 面向过程(面向结构)与面向对象的区别
- 浅谈算法和数据结构(4):快速排序
- n个顶点,m条边的全连通图,至少去掉____边才能构成一棵树?----腾讯2016研发工程师笔试题(一)
- 按照首先字母进行元素排序
- OOP概念回顾(一)
- CCF题库—模版生成系统
- SAP long text SAP长文本读取。
- CentOS下g++安装
- 串的应用--模式匹配算法
- 按照数字将字符串拆分
- Linq 选取datatable 指定列
- java中判断两个对象是否相等的方法和代码
- android service 的动态更改UI和service重启问题