有书共读】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 优先使用不可变的类,

#设计##Java#
全部评论

相关推荐

10-14 23:01
已编辑
中国地质大学(武汉) Java
CUG芝士圈:虽然是网上的项目,但最好还是包装一下,然后现在大部分公司都在忙校招,十月底、十一月初会好找一些。最后,boss才沟通100家,别焦虑,我去年暑假找第一段实习的时候沟通了500➕才有面试,校友加油
点赞 评论 收藏
分享
牛客410815733号:这是什么电影查看图片
点赞 评论 收藏
分享
头像
昨天 15:46
已编辑
中南大学 后端
字节国际 电商后端 24k-35k
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务