面向对象程序设计(OOP-Object Oriented Programming)

来源:互联网 发布:mp3刷机软件 编辑:程序博客网 时间:2024/05/22 17:09

面向对象程序设计之封装

1. 面向对象程序设计的三大基本特征:继承(Inheritence)、封装(Encapsulation)、多态(Polymorphism)
2. 封装:类包含了数据与方法,将数据与方法放在一个类中就构成了封装。
3. 属性需要定义在类中,又叫做成员变量;而定义在方法中的变量叫做局部变量。
4. 局部变量使用前必须要声明并赋初值;成员变量使用前必须要声明,但可以不赋初值。
5. 引用类型(reference type):引用类型是用在对象上的。一个对象可以被多个引用所指向,但同一时刻,每个引用只能指向唯一的一个对象。如果一个对象被多个引用所指向,那么无论哪个引用对对象的属性进行了修改,都会反映到其他的引用当中。

People people = new People();

引用指向        新指向

e.g1:

public class People{
int age = 20;
public void change (People people){
people.age = 30;
}

public static void main(String[] args){
People people = new People();
int age = people.age;
System.out.println(age);
people.change(people);
ing age2 = people.age;
System.out.println(age2);
}
}


结果:
20
30



e.g2:

public class People{
int age = 20;
public void change (People people){
people = new People();
people.age = 30;
}

public static void main(String[] args){
People people = new People();
int age = people.age;
System.out.println(age);
people.change(people);
ing age2 = people.age;
System.out.println(age2);
}
}

结果:
20
20

6. 如果一个类包含了属性与方法,那么该类的每一个对象都具有自己的属性,但无论一个类有多少个对象,这些对象共享同一个方法。
7. 关于方法参数传递的总结:对于Java中的方法参数传递,无论传递的是原生数据类型还是引用类型,统一是传值(pass by value)。

e.g.
public static void main(String[] args){
Person person = new Person();

int i = 10;
person.change2(i);
System.out.println(i);
}

class Person(){

int age = 20;

public void change2 (int age){
age = 40;
}
}
结果:
10

只是把age改成了40,对i的值没有任何影响。
引用就是对象地址的一种表示形式。原生数据类型就是传值。

8. 构造方法(Constructor):构造方法用于完成对象属性的初始化工作,构造方法的特点:
a) 构造方法的名字必须与类名完全一致(包含大小写)
b) 构造方法没有返回值,连void也不能出现。
c) 如果在定义一个类的时候,没有为类声明构造方法,那么Java编译器会自动为类添加一个没有参数且方法体为空的构造方法(默认的构造方法)
d) 如果在定义一个类的时候,为类声明了构造方法,那么Java编译器就不会再为类添加构造方法了。
e) 不能显式调用类的构造方法,构造方法通常是通过new关键字隐式调用。

9. new关键字在生成对象时完成了三件事情:
a) 为对象开辟内存空间。
b) 调用类的构造方法。
c) 将生成的对象的地址返回。

10. 使用new来生成对象的时候,后面的小括号()表示构造方法的参数列表,如果构造方法不接收参数,那么小括号中的内容为空;如果构造方法接收参数,那么小括号中的实际参数就需要与构造方法定义中的形式参数保持一致(参数数量一致、参数类型一致、按照顺序逐一赋值)。
原创粉丝点击