一.Java面向对象理论基础

一.面向对象基础理论

1.面向对象的理解
比如一个人
对象就是现实中实实在在存在的每个个体,每个人都是一个对象,这些对象都有自己的属性,如名字,年龄,性别等。
用面向对象的思想表示,代码如下:

class Human
{
	int mName;
	int mAge;
	//...
	
	void run();
	void jump();
	//...
	
}

class就是对象的具体描述,人可以跑,跳跃等,则是class中的函数。
类是一个抽象的概念,是对具体对象的描述,而现实中的人则是类的一个个实体对象。
比如一个叫王小二的人:

Human 王小二 = new Human();
这样就创建了一个Huamn的对象王小二,王小二是一个Human,则他拥有Human的一切属性和方法。

在面向对象中,我们不用关心类的具体实现,只需要知道其接口,就像开车一样,我们不会关心汽车的构造,发动机的具体实现,只需要知道方向盘,油门,刹车等等的使用
王小二.run();


2.类之间的关系
依赖关系:use-a A类中的一个方法操作了另一个类中的对象。
聚合关系:has-a A类中的对象包含B类的对象。
继承关系:is-a A继承了B类,此时A类不仅有了B类的方法,还加入了自己的方法。


3.面向对象的特性
(1)封装:
封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,
即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。
(2)继承:
继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。
对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),
而原始类称为新类的基类(父类)。派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。
java只支持单继承。
(3)多态性:
多态性是指允许不同类的对象对同一消息作出响应。
函数可以同名(参数不同,参数个数或者参数类型不同)
boolean isEquals2(int i);
boolean isEquals2(double i);
在调用的时候,不用区分这两个函数,系统会根据函数的参数类型,自动区分调用。


4.对象的接口
如上面Human的对象王小二,他提供的接口就是Human类中的public函数,
class Human
{
	String mNmae;
	int mAge;
	
	public void setAge(int age)
	{
		mAge=age;
	}
}
这样在外部就可以调用这个函数,王小二.setAge();我们只需要知道通过setAge()就可以设定年龄,而不需要关系具体的实现,这就是封装的特性。
只需要提供一个接口,供外部来调用。作为外部的调用者唯一关心的: 接口是什么。
在类中实现的时候,用public,private,protected来控制外部的访问权限。


5.关于继承
比如有一个Dog类,表示狗这个物种,有一个Bird类,表示鸟,他们都是动物,有共同的属性,则可以让他们继承Animal类
class Animal
{
	String mName;
	int mSex;

	void run();
	void jump();
}

然后Dog类可以继承自Animal
class Dog extends Animal
{
	
}

这样Dog就自动拥有了Animal的属性。


java中的每一个类都必须继承自另一个类,如果没有使用extends则隐式的继承Object类,Object类是所有类的超类,
JDK中有说明:

--类 Object
-java.lang.Object
public class Object
类 Object 是类层次结构的根类。每个类都使用 Object 作为超类。所有对象(包括数组)都实现这个类的方法。
从以下版本开始:
JDK1.0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值