有书共读】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#
全部评论

相关推荐

2025-12-25 10:16
已编辑
合肥工业大学 后端工程师
如题,在历经了长达多月的焦急等待,楼主也算是如愿以偿收到了梦中情司的意向了,秋招也终于是落下了帷幕,虽然手中的offer不够打牌,但已经满足了。华为时间线:9.3 笔试环节,惊险通过10.15 线下面试,前两轮技术面手撕都比较轻松,面试官态度也很好,最后一轮主管面,向主管表达了强烈的意愿,主管很和蔼,面试体验非常棒,1125定律后入池成功11.19 收到接口人的保温电话12.9 接到部门hr的保温电话,介绍了一下部门负责的工作12.23 收到华为的意向书,成为华孝子一枚~期间收到了之前实习过的公司的offer,害怕华子泡不出来就先签三方了,这下不得不毁约了,在此向前司道个歉,也感谢前司对我的认可和托举,祝业务蒸蒸日上~感谢从今年三月开始找暑期实习以来,所有朋友和家人的鼓励,我们宿舍的就业氛围相当好,大家会分享各种有用的信息以及面试中遇到刁钻的面试题,在有人收到offer的时候我们都会发自内心的高兴和祝福,在我去线下面的时候也借我穿过西服.....能在大学四年分入这么好的宿舍拥有这么这么好的舍友除了幸运我找不出其他的形容词。还要感谢我的父母,在我每一次面试前都给予鼓励,也在失败的时候安慰我,他们的托底是我前进的基石,以后有工资了要给父母买很多东西最感谢的是我的女朋友,我们从大一相识,一直坚持到大四,她是一个非常优秀也异常坚定的女生,也正是因为她的实力出众早再年初就定好了要去上海的一家外企。我为了也去上海,从暑期实习开始投了不少上海的岗位但无一例外的都被拒之门外,但这期间她从来没有嫌弃过我,反而一直鼓励我相信我,如果说父母的托底是我前进的基石,那女朋友的鼓励和信任则是我前进的动力和方向。在如今这个充满戾气和对立的社会,能找到一个一心一意彼此喜欢的人实在是很难得,我深知这种珍贵所以更会加倍珍惜也感谢自己吧,在经历了无数个失眠的夜晚和面试失败的打击下,最终还是迎来了最好的结果,记得在华为线下面的前几周我几乎回到了高三时期的作息,那真是一段充实美好的时光,好在最后的结果也没有辜负这份努力也想跟所有的牛友说:不要因为一时的失败而自怨自艾,妄自菲薄,只要坚持下去,总会有柳暗花明又一村的惊喜在等待着你,机会总是垂青于有准备的人,要相信否极泰来,相信自己。朋友,坚定地相信未来吧,相信不屈不挠的努力,相信战胜死亡的年轻,相信未来、热爱生命。
小肥罗:有这样的女朋友真是幸福
秋招白月光
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务