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); }}class Person{ int age = 20; public void change(Person person) { person=new Person(); person.age=30; } public void change2(int a) { age=40; }}
此题输出结果为:
20
10
因为将i赋值给age,但是i和age还是各自的。所以打印出i还是10;
注意参数传递和引用的区别。引用是对象地址一种表示形式。如果传递引用,那就是把地址传递了。
3.什么类型的引用就能指向类型的对象。比如People类型的引用就能指向People类型的对象,但不能指向Student类型的对象。比如:
People people=new People(); //正确People people=new Student(); //错误
4.构造方法(Construn):构造方法勇于完成对象属性的初始化工作
构造方法的特点:
- 构造方法的名字必须与类名完全一致(包括大小写)
- 构造方法没有返回值,连void也不能出现。
- 如果在定义一个类的时候,没有被声明构造方法,那么java编译器会自动为类添加一个没有参数且方法体为空的构造方法(默认的构造方法);
- 如果在定义一个类的时候,为类声明了构造方法,那么java编译器就不会在为类添加构造方法了。
- 不能显式的调用类的构造方法,构造方法通常是通过new关键字隐式调用。
5.new关键字在生成对象时完成了三件事情:
- 为对象开辟内存空间。
- 调用类的构造方法。
- 将生成的对象的地址返回给引用。
6.默认的构造方法:构造方法没有参数且方法体为空。
7.使用new来生成对象的时候,后面的小括号()表示构造方法的参数列表,如果构造方法不接收参数,那么小括号内容为空;如果构造方法接收参数,那么小括号中的实际参数就需要与构造方法定义的形式参数保持一致(参数的数量、类型、按照顺勋逐一赋值)。
程序例子:
public class PersonTest { public static void main(String[] args) { Person person=new Person(50); System.out.println(person.age); } } class Person { int age; public Person(int i) { age=i; } }
输出50 将50传递给i,然后赋值给age
Java SE 第十一记 面向对象之封装续二