Java SE 第十一讲----面向对象特征之封装2
1.如果一个类包含了属性跟方法,那么该类的每一个对象都具有自己的属性,但无乱一个类有多少个对象,这些对象共享同一个方法。
2.关于方法参数传递的总结:
对于Java中的方法参数传递,无论传递的是原生数据类型,还是引用类型,统一是传值(pass by value)
public class ParamTest { public static void main(String[] args){ Person person = new Person(); person.change(person); int age = person.age; System.out.println(age); System.out.println("----------------"); int i = 10;//原生数据类型 person.change2(i); System.out.println(i); } }
public class Person { int age = 20; public void change(Person person){ person = new Person(); person.age = 30; } public void change2(int age){ age = 40; } }
输出结果是:
20
----------------
10
解析:20——引用是对象地址的表现形式,10——因为是i把10给了age,age是变成了10,后面又变成了40,但是i自己还是10
3.什么类型的引用能指向什么类型的对象,比如People类型的引用就指向People类型的对象,但不能指向Student类型的对象,比如
People people = new People();//正确
Person people = new Student();//错误
4.构造方法(constructor)构造方法用于完成对象属性的初始化工作,构造方法的特点
a)构造方法的名字必须与类名完全一致(包含大小写)
b)构造方法没有返回值,连void也没有
c)如果在定义一个类的时候,没有为类声明构造方法,那么JAVA编译器会自动为类添加没有参数方法体为空的且构造方法
d)如果在定义一个类的时候,为类声明构造方法,那么JAVA编译器就不会自动为类添加构造方法了。
e)不能显示调用类的构造方法,构造方法通常是通过new关键字模式来调用(只是通常,后面还有反射这个概念)
5.new关键字在生成对象时完成了三件事
a)为对象开辟内存空间
b)调用类的构造方法
c)将生成的对象地址返回
6.默认的构造方法,构造方法没有参数且方法体为空
7.使用new来生成对象的时候,后面的小括号()表示构造方法的参数列表,如果构造方法不接受参数,那么小括号中内容为空,如果构造方法接收参数,那么小括号中的实际参数个数跟以及参数类型要与构造方法定义中的形式参数保持一致。
public class Person1Test { public static void main(String[] args){ Person1 person = new Person1(4);//这里的new 后面小括号就需要带有参数,因为Person1类中构造方法是要参数的 System.out.println(person.age); } }
public class Person1 { int age; public Person1(int i){ age = i; } }