黑马程序员_面向对象的编程思想

------- android培训java培训、期待与您交流! ----------

一、面向过程:强调的是功能行为。

例如:把大象装冰箱——打开功能->存储功能->关闭功能

执行方式:打开冰箱;存储大象;关闭冰箱。

语言举例:BASIC,C。

思想特点:动作的执行者。

面向对象:将功能封装进对象,强调具备了功能的对象

创建“冰箱”对象,为冰箱定义功能——打开、存储、关闭。

执行方式:冰箱.打开;冰箱.存储;冰箱.关闭。

语言举例:JAVA,C++,C#。

思想特点:动过的指挥者。

二、人开门:名词提炼法


(){操作门轴等;}

三、面向对象的三个特征:封装、继承、多态

实际开发中就是在找对象使用,没有对象就创建一个对象使用。

找到对象——建立对象——使用对象——维护对象的关系

四、类和对象的关系。

类:对现实生活中事物的描述。提取对象中共性的内容,是对具体的抽象。

对象:就是这类事物,是实实在在存在的个体。

举例:根据图纸生产汽车

class Car
{
	//描述汽车的属性,称为“成员变量”
	String color = "red";
	int num = 5;
	//定义汽车运行的行为
	void run()
	{
		System.out.println(color+"--"+num);
	}
}

public class  CarDemo
{
	public static void main(String[] args) 
	{
		//生产汽车,通过new操作符来完成,就是在堆内存中产生一个实体。
		Car c = new Car();//此时,本实例中已有初始化属性值:num=5,color="red"。
		//修改对象的属性值:对象.对象成员。
		c.color = "blue";
		//运行对象的方法。
		c.run();
	}
}

匿名对象:

new Car().color = "greed";
匿名对象,没有定义名称,所以只能调用一次。

匿名对象可作为实际参数进行传递:例如 show(new Car());

五、封装(Encapsulation)

封装:是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。

好处:1.将变化隔离;2.便于使用;3.提高重用性;4.提高安全性。

封装原则:将不需要对外提供的内容都隐藏起来;把属性都隐藏,提供公共方法对其访问。

class Person
{
	//用private权限修饰符隐藏属性或方法,外界无法访问
	private int age;
	//隐藏属性后,使用setAge()和getAge()方法对外提供访问接口
	public void setAge(int a)
	{
		if (a>=0 &&a<=130)
		{
			age=a;
		}
		else
		{
			System.out.println("输入的年龄值不正确!");
		}
	}
	public int getAge()
	{
		return age;
	}
	void speak()
	{
		System.out.println("age"+age);
	}
}
public class  PersonDemo
{
	public static void main(String[] args) 
	{
		Person p = new Person();
		//p.age = 20;	//对象的私有属性无法访问
		p.setAge(20);
		p.speak();
	}
}

六、构造函数

特点:

1.函数名与类名相同;

2.不用定义返回值类型;

3.不可以写return语句。

作用:用于给对象进行初始化。

	//构造器
	Person()
	{
		System.out.println("person run");//对象生成即可运行
	}
构造器的重载

class Person
{
	private String name;
	private int age;
	Person()
	{
		System.out.println("A:name="+name+",age="+age);
	}
	Person(String n)
	{
		name = n;
		System.out.println("A:name="+name+",age="+age);
	}
	Person(String n,int a)
	{
		name = n;
		age = a;
		System.out.println("A:name="+name+",age="+age);
	}
	Person(int a)
	{
		age = a;
		System.out.println("A:name="+name+",age="+age);
	}
}

当分析事物时,该事物存在即具备一些特性或行为,那么将这些内容定义在构造函数中。

构造代码块:在类中直接使用{……}的方式定义。对象建立即运行,且优先于构造器执行。

构造代码块是给所有对象初始化,构造器是给对应的对象初始化

七、this关键字:可用于区分局部变量和成员变量同名的情况。

例如:

Person(String name)
{
	this.name = name;//this.name是成员变量,name是局部变量。
}
this代表 本类的对象this代表它所在的函数所属对象的引用。哪个对象在调用this所在的函数,this就代表哪个对象。

this的应用:当定义类中功能时,该函数内部要用到调用该函数的对象时,即可用this来表示这个对象。

public boolean compare(Person p)
{
	return this.age == p.age
}
上面方法的调用:boolean b = p1.compare(p2);

this语句:用于构造函数直接进行互相调用。只能用this语句进行构造器之间的互相调用。

this语句只能放在构造器的第一行。

Person(String name,int age)
{
	this(name);
	this(age);
}





------- android培训java培训、期待与您交流! ----------
详细请查看:http://edu.csdn.net/heima/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值