您的位置:首页 > 编程语言 > Java开发

java中面向对象的三大基本特征

2011-12-10 16:39 363 查看
转载,原文来自http://blog.sina.com.cn/s/blog_5f79a56a0100c6ig.html

众所周知,java中的面向对象的三大基本特征是:【封装】、【继承】、【多态】

一、封装

对象要有一个明确的边界;边界的划分(对象各司其职、对象的粒度、对象的可重用性)

具体来说:

1.属性: 私有 private(提供set和get方法)

2.方法: 公开或私有public/private

3.方法声明 --> 公开

方法实现 --> 隐藏

实现改变时,对对象的使用者没有影响。

二、继承

共性放到父类,特性放到子类;子类,父类 --> 其实就是特殊 --> 一般

1.关键字: extends 例如:Dog extends Animal{}

2.java中一个类最多只能有一个直接的父类,即单继承(具有简单性、树形结构),

C++中是单继承

java中要实现多继承,通过接口来实现。

3.父类中所有属性和方法都能继承给子类;父类中的私有方法不能继承给子类。

4.java中的访问修饰符

访问修饰符

访问权限

继承 

private

本类内部

不能继承

default

本类+同包

同包子类可以继承

protected

本类+同包+不同子包

可以继承

public

公开

可以继承

5.构造对象过程

(1)分配空间

(2)递归地构造父类对象

a. 父类 初始化属性

b. 父类 构造方法

(3)初始化属性

(4)调用构造方法

6.super

用法:

super() 调用父类的构造方法,只能出现在构造方法的第一行

super.方法名 super表示父类的对象,通过它去调用父类的方法

注意:在写类的时候,一定要写默认无参的构造方法,如果一个构造方法的

第一句既不是this(),也不是super()时,那么就会在这里隐含的调用

他的父类的无参的构造方法,即隐含的有super()。

三、多态

运行时多态。

子类的对象放在父类的引用中,例如 Animal a=new Dog,子类对象当父类对象来使用。

1.多态原则:

(1)对象类型不变

(2)只能用引用调用其引用类型中定义的方法

(3)运行时,根据对象的实际类型去找子类覆盖之后的方法

例子:

有Animal类中有eat()和sleep()两个方法,sleep()中睡8小时;子类Dog中有

eat()方法,sleep()方法中睡6小时,还有wangwang()方法。

现创建Animal a=new Dog(); 不能调用a.wangwang(),调用a.sleep()输出睡6小时。

2.对象的强制转换

格式: 引用 instanceof 类型

引用所指的对象是否与类相符,返回值boolean值。

用法:

Animal a=new Cat();

if(a instanceof Dog)

{

Dog d=(Dog)a;

d.wangwang();

}

说明:如果只有Dog d=(Dog)a;运行时错误,因为a是Cat而不是Dog (多态原则第一条)

3.多态的灵活变换

(1)用于参数列表上:

public void m(A a){} 可以用A类的任何子类对象作为参数

(2)用在返回值上:

public A m(){} 这个方法可能返回A类的任何子类对象
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: