------- android培训、java培训、期待与您交流! ----------
说到Java程序设计,不得不提面向对象的设计思想。
面向对象是一种设计程序的思想,是相对于面向过程的思想而言的。在早前的c语言程序设计中,主要就是运用面向过程的思想。面向过程强调的是功能行为,而面向对象将功能封装进对象,强调具备了功能的对象。面向对象是基于面向过程的。举例来说:一个人要走进屋子,需要打开门,然后迈步进步,然后关上门,如果用面向过程的思想来思考,这个过程可以分为:人打开门——人走进屋——人关上门。很明显,这就是又多个动作组成一个过程。换而用面向对象的思想,把人看作是一个对象,把门也看作一个对象,这两个对象是相互独立的。首先,人要进屋就要先开门,就调用门这个对象中打开的方法。人这个对象中又包含一个走进屋的方法。然后,当人走进屋后,又调用门这个对象中关闭的方法,整个动作就完成了。我们把“一个人走进屋子”当作我们的需求,我们根据需求调用不同的对象包含的方法完成各种动作,这就是面向对象的思考方式。
面向对象是一种符合人们思考习惯的思想,通过面向对象的方式可以将复杂的事情简单化,将程序员从执行者转换成了指挥者。面向对象的思想要求我们在完成需求时:1.先要去找具有所需的功能的对象来用。2.如果该对象不存在,那么创建一个具有所需功能的对象。3.这样简化开发并提高复用。而程序员的开发过程也就转变成不断的创建对象,使用对象, 指挥对象做事情的过程。设计过程转变成管理和维护对象之间的关系。
面向对象有三个主要的特征:封装(encapsulation)
继承(inheritance)
多态(polymorphism)
封装:是指隐藏对象的属性和实现细节,仅对外提供 公共访问方式。
好处:1.将变化隔离。2.便于使用。3.提高重用性。4.提高安全性。
封装原则:将不需要对外提供的内容都隐藏起来。
把属性都隐藏,提供公共方法对其访问。
继承:多个类中存在相同属性和行为时,将这些内容抽取到 单独一个类中,那么多个类无需再定义这些属性和行 为,只要继承单独的那个类即可。
特点:1.多个类可以称为子类,单独这个类称为父类或者超 类。2.子类可以直接访问父类中的非私有的属性和行为。3.通过extends 关键字让类与类之间产生继承关系。
好处:1.继承的出现提高了代码的复用性。2.继承的出现让类与类之间产生了关系,提供了多态的前提。
多态:某一类事物的多种存在形态。
体现:父类或者接口的引用指向或者接收自己的子类对象。
作用:多态的存在提高了程序的扩展性和后期可维护性。
前提:需要存在继承或者实现关系
要有覆盖操作
类与对象的关系
首先,明确一点,二者绝对不是等价的,但是又存在着联系。java中描述事物通过类的形式体现,类是具体事物的抽象,概念上的定义。对象即是该类事物实实在在存在的个体。二者的关系如图所示
如:人有身高,体重等属性,有说话,打球等行为
•属性:对应类中的成员变量。
•行为:对应类中的成员函数。
•成员变量定义在类中,在整个类中都可以被访问。
•成员变量随着对象的建立而建立,存在于对象所在的堆内存中。
•成员变量有默认初始化值。
局部变量:
•局部变量只定义在局部范围内,如:函数内,语句内等。
•局部变量存在于栈内存中。
•作用的范围结束,变量空间会自动释放。
•局部变量没有默认初始化值。
{
String color = "red";
int num = 4;
void show()
{
System.out.println("color="+color+"..num="+num);
}
}
class CarDemo
{
public static void main(String[] args)
{
Car c = new Car();//建立对象
c.color = "black";//对对象的属性进行修改
c.show();//使用对象的功能。
}
}
1.函数名与类名相同
2.不用定义返回值类型
3.不可以写return语句
/*
需求:建立一个类,并通过重载构造函数的方式实现不同的初始化
*/
class Person
{//私有成员变量
private String name;
private int age;
//构造代码块
{
System.out.println("cry....");
}
//无参数构造函数
Person()
{
}
//一个参数的构造函数
Person(String name)
{
this.name=name;
}
//两个参数构造函数
Person(String name ,int age)
{
this(name);
this.age=age;
}
//以下是成员变量的set,get方法
public void setName(String name)
{
this.name=name;
}
public String getName()
{
return name;
}
public void setAge(int age)
{
this.age=age;
}
public int getAge()
{
return age;
}
public void speak()
{
System.out.println(name+": "+age);
}
}
public class PersonDemo
{//主函数入口
public static void main(String[] args)
{
//创建实例化对象,根据参数选择相对的构造函数进行初始化
Person p=new Person("leo");
p.speak();
p.setName("liu");
p.setAge(24);
p.speak();
Person p1=new Person("yean",23);
p1.speak();
}
}