校园网太不给力了,下载太慢了。编程基础还没下载下来,只好先看面向对象了。希望不会“毒火攻心,走火入魔”。 1、面向对象有三大特征: 封装(Encapsulation) 继承(Inheritance) 多态(Polymorphism) 2、局部变量与成员变量: 变量定义部分所定义的变量称为类的成员变量,在方法体中定义的变量和方法的参数称为局部变量。 1>成员变量和局部变量的类型可以使JAVA中的任何一种数据类型。 2>成员变量在整个类的内部都有效,局部变量只在定义它的方法内有效。 3>如果局部变量的的名字与成员变量的名字相同,则成员变量被隐藏。这使如果想在该方法内使用成员变量,必须使用关键字this。 class Person { int age; void shout() { System.out.println(“oh,my god! I am “ + age); } } age是类的属性 ,也叫类成员变量 。 shout是方法也叫类的成员函数。 shout方法可以直接访问同一个类中的age变量 ,如果一个方法中有与成员变量同名的局部变量,该方法中对这个变量名的访问是局部变量,而不再是成员变量。 3、当一个对象被创建时,会对其中各种类型的成员变量自动进行初始化赋值。创建新的对象之后我们就可以使用“对象名.对象成员”,来访问对象的成员(包括属性和方法)。对象的引用句柄实在栈中分配的一个变量,对象本身是在堆中分配的。 4、对象的生命周期:如果没有引用对象指向某个对象,这个对象就会变成垃圾。 对象的比较:“==”与equals()方法的区别: 值类型是存储在内存中的堆栈(以后简称栈),而引用类型的变量在栈中仅仅是存储引用类型变量的地址,而其本身则存储在堆中。 ==操作比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量在堆中存储的地址是否相同,即栈中的内容是否相同。 equals操作表示的两个变量是否是对同一个对象的引用,即堆中的内容是否相同。 ==比较的是2个对象的地址,而equals比较的是2个对象的内容。 显然,当equals为true时,==不一定为true; public class TestString { public static void main(String[] args) { String s1 = "Monday"; String s2 = "Monday"; if (s1 == s2) System.out.println("s1 == s2"); else System.out.println("s1 != s2"); } } 编译并运行程序,输出:s1 == s2 说明:s1 与 s2 引用同一个 String 对象 -- "Monday"! 5、实现类的封装性: 为了实现良好的封装性,我们通常将类的成员变量声明为private,再通过public的方法来对这个变量进行访问。对一个变量的操作,一般都有读取和赋值操作,我们分别定义两个方法来实现这两种操作,一个是getXxx()(Xxx表示要访问的成员变量的名字),用来读取这个成员变量操作,另外一个是setXxx()用来对这个成员变量赋值。 一个类通常就是一个小的模块,我们应该让模块仅仅公开必须要让外界知道的内容,而隐藏其它一切内容。我们在进行程序的详细设计时,应尽量避免一个模块直接修改或操作另一个模块的数据,模块设计追求强内聚(许多功能尽量在类的内部独立完成,不让外面干预),弱耦合(提供给外部尽量少的方法调用)。用总统指挥一支军队的例子来说明这种效果。 封装性的优点:隐藏类的实现细节; 让使用者只能通过事先定制好的方法来访问数据,可以方便地加入控制逻辑,限制对属性的不合理操作; 便于修改,增强代码的可维护性 6、构造函数的定义和作用: 构造方法的特征 1> 它具有与类相同的名称; 2>它不含返回值; 3>它不能在方法中用return语句返回一个值 注意:在构造方法里不含返回值的概念是不同于“void”的,在定义构造方法时加了“void”,结果这个方法就不再被自动调用了。 构造方法的作用:当一个类的实例对象刚产生时,这个类的构造方法就会被自动调用,我们可以在这个方法中加入要完成初始化工作的代码。 7、this this是java的关键字,用于表示对象自身的引用值。当在类中使用实例变量x或者实例方法f()是,本质上都是this.x或this.f()。当类中有两个同名变量,一个属于类的成员变量,另一个属于某个特定的方法,可使用this区分成员变量和局部变量。 可能在类中写了多个构造方法,若想在一个构造方法中调用另一个构造方法,以免重复代码。可用this关键字构成一个特殊的“显示构造方法”调用语句。该语句的必须是构造方法中的第一条语句。格式:this(参数列表)。 构造方法是在产生对象时被java系统自动调用的,我们不能在程序中象调用其他方法一样去调用构造方法。但我们可以在一个构造方法里调用其他重载的构造方法,不是用构造方法名,而是用this(参数列表)的形式,根据其中的参数列表,选择相应的构造方法。 8、垃圾回收过程分析 1>C++中的析构方法:在一个对象被从内存中释放时,析构方法就会被自动调用,这个方法中的程序代码就得到了执行,有了析构方法,我们的程序就可实现每个对象在释放前都自动完成一段清理的事情。在C++中,常用析构方法类释放执行时的资源。 2>java中finalize()方法类似于C++的析构方法。 fianlize()方法是在对象变成垃圾之前被调用。
java—面向对象、一
最新推荐文章于 2024-08-14 23:12:09 发布