| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Java知识库 -> 较完整的类和对象基本总结(Java) -> 正文阅读 |
|
[Java知识库]较完整的类和对象基本总结(Java) |
类的对象的概念类和对象的关系:简单来说,类就是一个对象的图纸,而对象就是类的实例。一个类可以创建很多对象,就像一份建筑图纸可以建很多座房子那样。 深入:之前我的博客如何深入理解你的第一个Java程序里有提到类的概念。那篇文章提到,类的本质是抽象,而抽象的最大特征就是没有实体。也就是说,任何没有实体的事物,理论上都可以作为一个类。也许你觉得这用的定义有点抽象,这样的定义是为了考虑不同的情况,因为在实际的编程过程中,你总会设计一些类时,不会创建这个类所对应的对象。此时为了逻辑自洽,你大可把类理解为一种没有实体的事物,或许有实例,或许没有。 类的实例化类的实例化,即以某个类为模板创建该类的对象,语法为
其中new是实例化的关键字,表示要新建一个对象。Dog是要实例化的类,后面加一个括号表示调用与Dog类同名的构造方法。这个语句将会返回一个Dog类的对象,一般会使用Dog的引用类型进行接收。
这里dog是Dog类的引用类型,通过dog变量可以向一个dog对象发送消息。 类的组成类的基本组成为字段和方法,都可以统称为类的成员。 字段
字段即属性或者参数,用于描述目前对象的状态。可以是任何数据类型,基本数据类型,引用数据类型均可。 方法
方法即行为,用于描述目前对象的行为。最基本的组成结构为返回值,参数和方法名和参数列表,方法体。一般的方法的方法名不可以与类名雷同(构造方法除外),方法体用于说明方法的具体实现。 与类相关的关键字静态修饰staticstatic基本语法:可以修饰类中的字段、方法。被static修饰后的类成员将不依赖于具体的对象,而依赖于类本身。 staitc的内部实现:从内存的角度看,被static修饰的字段和所有的方法(不管有没有static修饰,都以字节码的形式)被存放在方法区中。存在方法区中意味着有且只有一份,不依赖于具体的对象(new出来对象都存在堆里,允许存在多份),这意味着static修饰的字段和所有方法被所有对象所共用,或者说只依赖于类。 静态字段和方法的调用方式:类名.静态字段或静态方法(也可以使用具体的实例来调用静态字段和方法,但并不建议)
答:不允许。Java并没有定义static修饰局部变量的语法,也就是说被static修饰的变量还是会放在方法区里,但是Java又定义局部变量是存放在栈上的,因此这个变量的存储位置就出现了矛盾。 this关键字和static关键字
this有以下三种用法: this存在的意义为了防止当前对象的字段名和其他临时变量发生冲突或者其他需要利用到当前对象引用的情况。 this的内部实现:this一般用于实例方法或构造方法中。从内部实现来看,Java在调用一个非静态方法时,除了传递显示声明的参数外,还会隐式地传递当前对象的引用到该方法中,以便于后续的操作。 在你理解了this的内部实现之后,此时你可以进一步理解static关键字了。static修饰的方法,就是没有this的方法。 访问修饰限定符访问修饰限定符修饰类成员时
Java有四种访问修饰限定符,分别是
其中protected和默认访问权限需要包和继承的知识,这里先不进行讨论。 以下是几个关于访问修饰限定符语法的常见问题、
答:放在你要进行访问权限控制的类成员或类的正前方,仅对紧跟着访问修饰限定符的事物有访问控制效果。
答:这是一个非常重要的问题。为了制定类的创建者和使用者的界线,制定这个界线有以下好处: 1.降低类使用者的使用成本 2.方便使用者的代码重构 拓展:当访问修饰限定符修饰类时
类的包访问权限:若你具有Java的包的知识,这里仅需要注意一点,没有明确指定装包的.java文件,将会被放在当前路径的默认包中。 public修饰类:
此外,若你不想要任何人使用你的类,也就是想要实现一个类似private的类(注意,没有protected和private类),可以使用private修饰类的构造方法。你可以定义一个静态方法返回一个该类对象的引用。 类的包访问 对象的初始化字段的初始值在Java中,若你想要使用变量,你必须初始化你的临时变量,但却不用初始化字段也可以直接使用,这些字段会用一个默认值,这是另很多人迷惑的点。 构造方法
在实例化时,要在类名后加一个括号,这有什么用意?若你知道对象的实例化过程,你就能理解为什么这么写了。 对象的实例化过程:
构造方法的存在,正是为了保证对象的初始化。 默认构造方法之前介绍了对象的实例化过程,有时你并没有使用写构造方法,但为什么也可以进行对象的实例化呢?因为在你没有写任何构造方法的时候,系统会为你提供一个默认的无参构造方法。注意:若你有提供构造方法,系统将不会再为你提供构造方法了。 构造方法的方法名和返回值
构造方法的方法名与类名相同,这是为了防止命名冲突,因为一个类的方法只有一个,此时定义类名就是构造方法名就可以保证构造方法的方法名是独一无二的。 构造方法无返回值,这是Java的基本语法,不必深究。 在构造方法里调用构造方法你可以使用在构造方法中使用使用this();调用另一个构造方法,但请注意,只能在构造方法里用this调用另一个构造方法,且只能放在构造方法的第一行,一个构造方法只能调用其他的构造方法一次。在调用完其他的构造方法后,会继续执行当前的构造方法。
答:可以。只要保证this调用的构造方法的语句都放在第一行,且代码不出现死循环。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 22:44:31- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |