------- android培训、java培训、期待与您交流! ----------
面向对象:
1、面向对象是一种将复杂问题简单化的思想,是从早期的编程面向过程思想发展而来。要实现一个目标,面向过程是强调过程,也就是从开始到实现。这一目标需要执行的一系列步骤过程,通过操作者一步一步实现。而面向对象则是分析目标需要哪些对象参与实现,通过调用这些对象的功能实现目标,能使我们从执行者转换成指挥者。
2、面向对象例子
我喜欢户外露营,每次组织活动时就用到面向对象的思想。例如我想组织一帮人去海坨山露营,首先需要预先熟悉路线,这就涉及到如何选择交通工具、如何进山、在何处扎营、如何出山等;其次是统计出行人数根据路线难度、时间安排审核哪些人适合去哪些人不适合去并通知好大家出发时间行程安排注意事项等;再者准备露营装备,哪些人自己有装备哪些需要租借等。挺复杂的一件事,如果是面向过程那就是一个人上上下下全包下来,这要累个半死,面向对象思想就是找个懂路线的负责路线,找个时间充裕的负责联络,再找个能弄到装备的负责装备,我统一指挥行动就行,不需要我什么都亲力亲为。
3、对象和类
对象是对客观事物的抽象,类是对对象的抽象。每个对象的属性、状态通过编程实现就对应相关的数据和方法;每一类对象的数据名称、方法体通过类来定义,类是对象的模板,对象是类的实例。
面向对象编程思想就是将我们面对的问题进行解剖,分析问题涉及到哪些客观事物,并将其抽象为一系列对象,通过这些对象间的相互作用来解决问题。抽象出来的这些对象通过类封装起来,下次遇到问题用到此类对象时还能够重用。
封装:隐藏对象的属性和实现细节,仅对外提供公共访问方式。
好处
1.将变化隔离
2.便于使用
3.提供重用性
4.提高安全性
private:私有性修饰符
public:公有性修饰符
私有属性只能在本类中访问,外部没有权限访问
私有属性一般有两个方法:设置和访问
私有属性提供访问方式,就可以在访问方式中加入逻辑判断等语句对访问的数据进行操作,提高代码健壮性,私有仅仅是封装的一种表现形式
class Person
{
private int age=20;//私有成员变量
public void setAge(int a)//公有成员函数,对外提供操作私有成员变量的方法
{
if(a>0 && a<130)
{
age=a;
speak();
}
else
System.out.println("feifa age");
}
public int getAge()//公有成员函数,对外提供操作私有成员变量的方法
{
return age;
}
void speak()//成员函数
{
System.out.println("age="+age);
}
}
class PersonDemo
{
public static void main(String[] args)
{
Person p=new Person();//通过Person类创建实例对象p
p.setAge(40);
p.setAge(-40);
p.speak();
}
}
对象初始化过程
Person p= new Person("zhangsan",20);
该句话都做了什么事情?
1. 因为 new 用了 Person.class. 所以会先找到 Person.class 文件并加载到内存中
2. 执行该类中的 static 代码块,如果有的话,给 Person.class 类进行初始化
3. 在堆内存中开辟空间,分配内存地址
4. 在堆内存中建立对象的特有属性,并进行默认初始化( private int age ,默认为 0 )
5. 对属性进行显示初始化( private int age=20 ,显示初始化为 20 )
6. 对对象进行构造代码块初始化
7. 对对象进行对应的构造函数初始化
8. 将内存地址付给栈内存中的 p 变量
class Person
{
private String name;//默认初始化为null
private int age;//默认初始化为0
private static String country ="cn";//显示初始化
//构造方法接收参数对某个调用该构造方法的对象进行初始化
Person(String name,int age)
{
this.name=name;
this.age=age;
System.out.println(name+"..."+age);
}
//构造代码块,为此类所有对象进行初始化
{
System.out.println(name+"..."+age);
name="lisi";
age=25;
System.out.println(name+"..."+age);
}
public void setName(String name)
{
this.name=name;
}
public void speak()
{
System.out.println(this.name+"..."+this.age);
}
public static void showCountry()
{
System.out.println("country="+country);
}
}
class Chushihua
{
public static void main (String[] args)
{
Person p =new Person("zhangsan",20);
}
}