类定义---方法及其处理的数据对象的集合结构

将现实的对象(物体)和概念映射到程序中的对象(变量)中

1:使用new运算符创建的类类型的主体称为实例,创建实例的操作称为实例化,

  new Account()实例化了一个Account实例;

2:对象就是对程序运行时动态创建的主体的总称

3:类实例中的字段,即实例变量,会初始化为默认值

4:类结构

 原则上所有的字段都应该设为私有,未指定private的字段默认访问都是对包内部公开的

 将字段设为私有,防止外部访问,使方法和字段紧密结合称之为封装

5:构造函数的作用就是正确的初始化实例,防止初始化不完整或者不正确

 声明类类型的时候一定要提供构造函数,如果类中未定义,会默认定义一个空的构造函数

 构造函数不是方法,不能通过实例.构造函数()访问

6:方法和消息

 实例方法的调用可表示为向对象“发消息

7:标识符命名

 类:大驼峰(首字母大写);接口:大驼峰(首字母大写),表示动作的接口名称时形容词。表示(“可……的”)接口以”……able“结尾,例如Cloneable,Runnable;

 方法:小驼峰(首字母小写);字段:小驼峰(首字母小写);常量:全部大写,多个单词之间用_分隔;局部变量或形参:小驼峰(首字母小写)

8:方法访问器

 用于获取字段值的方法称为getter方法,用于设置字段值的方法称为setter方法,两者统称为访问器(accessor)

 建议将字段abc的setter名设为setAbc,getter名设为getAbc,符合命名规范。另,如果abc是boolean型,一般是用isAbc作为方法名

9:如果在字段声明赋初始值,字段在创建实例就会被初始化值;

10:在构造函数内部可以使用this(……)来调用当前类中的其它重载的构造函数;必须在构造函数的开头运行;

11:请不要返回引用类型的字段值,因为外部能通过该引用值间接改写值;

12:类变量 -声明中加上static的字段就是类变量(静态字段)。类名.类变量或者实例变量.类变量;

13:如果常量需要提供给类使用者,请以public且final的类变量形式进行提供;

14:类方法(静态方法)-方法加上static的方法,调用类名.方法名();类方法中仅允许访问类变量、类方法;(类方法中可以使用实例的方法);

15:类初始化器-在类被初始化也被称为静态程序块或static程序块,只执行一次;类初始化器中不允许return\this\super

 

 下图两种初始化类变量

16:实例初始化器-用于初始化实例,在构造方法之前执行,每次实例化都会执行一次

17:包--将类集中起来进行封装;下图中p.Type称之为完全限定名,Type称为简名

  包的作用:1:避免命名冲突;2:根据特征分类;3:封装(访问控制)

  包的命名规则:小驼峰(首字母小写)

 

18:类型的导入

  1:单一导入import 完全限定名;2:按需导入import 包名.*

在按需导入不可以导入不同层次的包中的类型名称,例如包结构a.b.c.……;import a.*仅导入a包中的类型,b及字包中的不会导入,如需导入b中的类型:import a.b.*

19:静态导入:类变量,类方法(静态导入一般不建议)

  1:import static 类型名称.标识符名称;2:import static 类型名称.*

19:源文件和类文件可以在不同目录中

20:类和成员的访问属性

  从包的角度来看,类的访问属性1:public类(使用与包无关);2:非public类(默认)(仅在所属包内使用);

21:成员访问控制

  类变量、实例变量、方法都是类成员;

  公开(public)-包的内外部都可以使用;

  限制公开(protected)-包内部和包外部的子类;

  默认(defautl)-包内部

  私有(private)-类内部

番外:

  1:初学者在包使用中的一个问题“使用java命令运行class文件提示“错误:找不到或无法加载主类“的问题分析

     注意原因时在执行的时候会严格以当前用户路径为基础,按照package指定的包路径转化为文件路径去搜索class文件。

     参考这篇(https://www.cnblogs.com/guohu/p/11101285.html)作者写的很详细

  2:判断两个对象是否相等,主要基于equals方法和hashcode方法

   参考这篇(https://blog.csdn.net/u013063153/article/details/78808923

最新文章

  1. Mifare系列4-组成(转)
  2. php大力力 [051节] 支付宝支付.申请支付资质,等待审核中
  3. MAC按键以及快捷键
  4. 解决SQLSERVER在还原数据时出现的“FILESTREAM功能被禁用”问题
  5. MVC自带的校验
  6. docker offical docs:Working with Containers
  7. CoreAnimation 核心动画二 锚点
  8. Python3 字符编码
  9. Hibernate学习之表一对多,多对一关系
  10. 在 Azure 网站上使用 Memcached 改进 WordPress
  11. 基于Spring的Web缓存
  12. X-002 Exyson4412芯片启动过程分析
  13. Javascript 闭包与高阶函数 ( 二 )
  14. 翻译连载 |《你不知道的JS》姊妹篇 |《JavaScript 轻量级函数式编程》- 引言&前言
  15. 为什么国外的 App 很少会有开屏广告?
  16. Aptana版本回滚的方法
  17. 带着新人看java虚拟机05(多线程篇)
  18. 【Django】 TemplateDoesNotExist at /HTMLeditor/HTMLeditorHandler/
  19. QPainter绘制特殊线条
  20. mongodb的Snapshot 隔离级别(记住)

热门文章

  1. UML--> plantUML安装
  2. 宝塔面板管理阿里云服务器FTP不能用
  3. k8s注册节点提示Docker SystemdCheck]: detected cgroupfs" as the Docker cgroup dr iver. The r ecommended dr fiver is" systemd"
  4. 设计模式-05建造者模式(Builder Pattern)
  5. 聊聊CMDB的前世今生
  6. ATL窗口
  7. 消息中间件面试题31道RabbitMQ+ActiveMQ+Kafka
  8. Node——request使用代理
  9. LeetCode227:基本计算器II
  10. 题解 【[MdOI2020] Decrease】