JAVA核心技术I之对象与类

知识点总结:
1)OOP:面向对象程序设计,它认为程序是由对象构成,这些对象有自己的属性和能执行的操作。
创建类的实例:由类构造对象的过程。(我觉得就是在类中new 一个新的对象的过程,如果有不对的请指出)
封装:将数据和行为结合在一个包里,并对对象的使用者隐藏了数据的实现方法;
实现封装的关键在于绝对不能让类中的方法直接访问其他类的实例域,但可以访问他自己类的实例域。
实例即对象,实例域,即是跟对象有关的属性。跟类相关的属性,叫类域,一般用static修饰。操作数据的过程叫方法。
2)类是对象的模板,对象是类的具体实例。也就是说,任何对象都是类的一个实际的实体。而类中包括属性(状态)、方法(行为)。而要想调用类里边的这些东西,就必须通过实例化一个对象,才能调用类中的这些东西呦。

  1. 类是一种抽象的概念,对象是类的一种具体表示形式,是具体的概念。先有类,然后由类来生成对象(Object)。对象又叫做实例(Instance)。
  2. 类由两大部分构成:属性以及方法。属性一般用名词来表示,方法一般用动词来表示。

    类之间的关系:①依赖(“use-a”)②聚合(“has-a”)③继承(“is-a”)(应该将互相依赖的类减至最少)

3)对象与对象变量
例子:new Date()这里构造了新的对象,而Date date = new Date()中的date就是一个对象变量,他是Date类型的。

如果单独定义一个对象变量,是不能调用这个类的方法的,比如Date date;s = date.toString();就是错的(可以把Date跟int这些基本数据类型进行类比,只不过他是引用类型)

注意:一个对象变量没有实际包含一个对象,只是引用一个对象。(所有java对象都存储在堆中)

4)更改器方法:对实例域作出修改的方法,一般以set开头

访问器方法:仅仅访问实例域而不作修改的方法,一般以get开头

5)在一个源文件中,只能有一个公有类,但是可以有任意多个非公有类。

6)构造器(构造函数)有四点需要记住:
① 构造器与类同名;
② 每个类可以有一个以上的构造器;
③ 构造器可以有0个,1个或1个以上的参数;
④ 构造器没有返回值;
⑤ 构造器总是伴随着new一同使用。

7)this 的作用:(重要)
首先,this指向方法的隐式参数,即调用此变量或方法的对象(就是你说的当前对象)。
看下面这个例子:
class test{
private String a;
void a(String a){
this.a =a;
}
public static void main(String[] args){
test t1 = new test();
test t2 = new test();
t1.a(“a”);//调用a这个方法的时候,this指向t1这个对象
t2.a(“a”);//调用a这个方法的时候,this指向t2这个对象
}
}
第二,如果this(…)出现在构造器或其它方法的第一句,那么说明这个构造器将调用同一类中的其他构造器或方法。
比如:
public a(int x,int y)
{

}
public a(int x,int y,String z)
{
this(x,y);//调用a(int x,int y)
z=…
}

8)不要编写返回引用可变对象的访问器方法,如果需要返回一个可变对象的引用,应该对他进行克隆。(P107页有案例)

9)static是个修饰词,表示静态

类变量也叫静态变量,也就是在变量前加了static 的变量;实例变量也叫对象变量,即没加static 的变量;

区别在于:

类变量和实例变量的区别在于:类变量是所有对象共有,其中一个对象将它值改变,其他对象得到的就是改变后的结果;而实例变量则属对象私有,某一个对象将其值改变,不影响其他对象;

static具体作用参见另一篇博客,里面有详细解释。

10)静态方法是不能向对象实施操作的方法。在下面两种情况下使用静态方法:
1.当一个方法不需要访问对象状态,其所需的参数都是通过显示参数提供的;
2.当一个方法只需要访问类的静态域。

11)每一个类都可以有一个main方法,这是对类进行单元测试时的一个常用技巧。但是要注意运行时是运行不同的类名。

12)java程序设计语言使用值调用。也就是说,方法得到的是所有参数值的一个拷贝,特别是,方法不能修改传递给他的任何参数变量的内容。

方法参数变量共有两种类型:基本数据类型和对象引用类型。

方法参数的使用情况:(具体是实现代码参照书上P117页ParamTest.java)
① 一个方法不能修改一个基本数据类型的参数(即数据型和布尔型值)
② 一个方法可以改变一个对象参数的状态。
③ 一个方法不能让对象参数引用一个新的对象。

13)如果类中提供了至少一个构造函数,但是没有提供默认的构造函数,那么在构造对象时若不提供构造参数会被认为不合法,出错。

14)初始化数据域的方法:
1.在构造函数中设置值
2.在声明中赋值
3.初始化块
class A {
…..
{
…..//这里就是初始化块,并且可以添加static关键字,那么在类第一次加载,就会加载这里的代码
}
}
15)关于finalize()方法不是很理解,如果有懂得大神请指导一下

16)静态导入有两个应用:算数函数(Math类)和笨重的常量(如Calendar类)

17)关于注释涉及到写代码的规范,以后我会写一篇专门的代码规范的博客以供参考。

18)类设计技巧:
1.一定要将数据设计为私有。最重要的是不要破坏封装;
2.一定要对数据初始化;
3.不要在类中使用过多的基本数据类型,可以采用另一个类对其进行封装;
4.不是所有的域都需要独立的域访问器和域更改器;
5.使用标准格式进行类的定义;
一定采用下面的顺序书写类的内容:
公有访问特性部分
包作用域访问特性部分
私有访问特性部分
在每一部分中,应该按照下列顺序列出:
实例方法
静态方法
实例域
静态域
6.将职责过多的类进行分解;
7.类名和方法名要能体现他的职责。

版权声明:本文为博主原创文章,未经博主允许不得转载。

原文地址:https://www.cnblogs.com/yangquanhui/p/4937451.html