java核心技术卷1笔记4------对象与类

======================java核心技术卷1第4章-------对象与类=============================
主要内容:
    1 类与对象
    2 静态域与静态方法
    3 成员与方法
    4 对象构造
    5 包
    6 类设计技巧
    
======================================================================================

1 类与对象
    1.1 类:类是构造对象的模板。通俗点说类就是具有相同属性和相同行为的一类事物。
    
    1.2 对象:是类的一个实例,通过类构造产生
        
    1.3 对象具有三个主要特新:
        行为:可以通过对象施加那些操作,可调用哪些方法和函数
        状态:调用那些方法时,对象如何响应
        标识:如何区分有相同方法与状态的不同对象
    1.4 类之间的关系:
        依赖(uses-a):一个类依赖另一个类,例如类A中的方法需要用到类B中的属性
        聚合(has-a):一个类的对象包含另一个类的对象
        继承(is-a):一个类是继承另一个类而来,如:鱼--继承-->动物
        
2 静态域与静态方法
    2.1 静态域:其修饰符为static,每个类只有一个这样的域。其修饰的成员变量属于类本身,
                不属于每一个对象,即所有的对象都共享这一个成员变量
        静态常量:对于一个类公共的成员,可将其定义成静态常量,不允许对象对其进行修改
                 定义形式如: public static final double PI=3.1415926;
                 
    2.2 静态方法:静态方法不能向对象实施操作,即不能通过对象进行调用,可直接通过类名进行调用
                  如:Math.pow(x,a);
        使用静态方法的两种情况:
                a) 不需要访问对象状态,所需参数通过显示参数提供,如Math.pow;
                b) 只需要访问类的静态域
                
    2.3 静态变量与静态方法小总结:
               a) 静态方法只能调用静态变量
               b) 静态方法不能调用非静态方法,非静态方法可以调用静态方法。
               
                浅析一下原因:类构造器对类进行初始化时,为类开辟了一块static域,并把静态成员存放到该位置。
                              非静态方法是通过实例去调用的,故调用静态方法时,相应的域和成员已经初始化完毕,
                              静态方法调用非静态方法,对应的实例可能没有完成初始化,非静态方法或需要的成员变量并未加载进来
               c) 静态方法不能用 this,super 调用
               d) 构造方法和局部变量不能声明为 static 
               
3  成员与方法
   3.1 成员就是类的一些属性,方法即类的一些行为
   
   3.2 方法参数:在C++中参数可以通过值传递,引用传递;在Java中,参数都是按值进行传递,
                方法得到的参数都是一个拷贝,并且犯法不能修改传递给他的任何参数变量的内容,
                方法内修改的是拷贝得到的对象。

4 对象构造
    4.1  重载
            一个类至少有一个构造器,也有可能有多个构造器,这中特征成为重载;
            重载特征为:方法名相同,参数不同,包含参数个数、参数类型
            另外一种形式可通过在抽象类中对方法定义,在子类中实现方法
    4.2 默认域初始化
            若构造器没有显示给域赋予初始值,则会被自动符为默认值,数值为0,布尔型为false,对象引用为null
    4.3 无参构造器
            对象由无参构造函数创建时,其状态被设置为默认值,若类中没有编写任何的构造器,系统会默认生成一个无参构造器
    4.4 显示域初始化
            在执行构造器前,可以执行赋值操作,为实例域设置一个有意义的初始值
    
    4.5 初始化块
            对类进行初始化数据域的方法:构造器设置,在声明中赋值,初始化块中赋值
            
        初始化块与构造器执行顺序:
            静态初始化块-->非静态初始化块-->构造器


5 包
    Java中的包就是一个文件夹,通常对于功能相似的类会放到同一个文件夹中
    5.1 类导入
        Java中的类可以使用所属包中的所有类,导入包后在使用类时就无需写包的全名,
    
    5.2 静态导入
        静态导入用于导入类的静态域和静态方法,在源文件顶部导入类,使用该类的静态方法即静态域则不必加类名
        
6 类设计技巧
    6.1 保证数据私有,不要破坏封装性
    6.2 对数据初始化,尽管系统会给一个默认值;在C++中可以避免如野指针之类的问题
    6.3 不要在类中使用过多的基本类型
    6.4 不是所有的域都需要独立的域访问器和更改器
    6.5 对于职责过多的类进行分解
    6.6 类名和方法名要能够体现它们的职责,即名称要与功能匹配
    6.7 优先使用不可变的类,
    

猜你喜欢

转载自blog.csdn.net/u012824097/article/details/81589379