// 毛色
public String furColor;
// 年龄
public int age;
}
有了这个类之后,它就相当于我们的一个模板,根据这个模板我们就能够创建一个个具体的宠物,而这些宠物,就叫做 对象;
public class Pet{
// 名字
public String name;
// 毛色
public String furColor;
// 年龄
public int age;
public static void main(String[] args){
// 创建一个对象
Pet dog = new Pet();
dog.name = “博美”;
dog.furColor = “white”;
dog.age = 1;
Pet cat = new Pet();
cat.name = “英短”;
cat.furColor = “orange”;
cat.age = 2;
}
}
属性
每个宠物都有自己的名字、毛色和年龄等一系列状态,而这些状态就叫做一个类的 属性。而属性的类型既可以是基本类型(比如上述例子中的 int
),也可以是引用类型(上述例子中的 String
)。而在 Java 语言中,属性的命名虽然没有强制规定,但是一般都是有一套大家通用的命名方法,即:
若属性是一个单词组成,那么一般都是小写;
若属性是多个单词组成,那么则采用驼峰法;
关于更多的命名规定,推荐参考阿里巴巴出品的 《Java 开发手册》,下载地址:https://github.com/cunyu1943/amazing-books
方法
而除开属性之后,每个对象还能够有许多其他的功能,就像宠物都能吃东西、会叫……,那么这些他们能够做的事情,在类里边就可以用 方法 来进行表示;
public class Pet{
// 名字
public String name;
// 毛色
public String furColor;
// 年龄
public int age;
// 吃东西对应的方法
public void eat(){
System.out.println(“吃东西!”);
}
// 叫唤对应的方法
public void bark(){
System.out.println(“叫唤!”);
}
}
而对于方法,也有需要注意的几点:
-
方法是可以有返回值的,如果要返回对应值,则其返回值的类型要与返回值相对于,对于不需要返回值的方法,则将其返回类型设置为
void
; -
方法是可以有参数的,我们上述例子的方法中都是不带参数的,但如果我们有需要,就可以加上自己需要的参数,但此时注意要带上参数的类型;
总结起来,可以分为如下四种方法:
- 无参无返回值
public void methodName(){
……
}
- 无参有返回值
public boolean methodName(){
……
return false;
}
- 有参无返回值
public void methodName(String name){
……
}
- 有参有返回值
public boolean methodName(String name){
……
return false;
}
public class Pet{
// 名字
public String name;
// 毛色
public String furColor;
// 年龄
public int age;
// 具有返回值的方法
int getAge(){
return age;
}
// 带有参数的方法
void setAge(int age){
this.age = age;
}
// 吃东西对应的方法
void eat(){
System.out.println(“吃东西!”);
}
// 叫唤对应的方法
void bark(){
System.out.println(“叫唤!”);
}
}
而对于方法命名的方式,也是有一定讲究的。因为一般而言方法都是一个类的动作行为,所以 一般都是以动词开头,而如果有多个单词组合,则除开第一个单词全部小写之外,后面每个单词的第一个字母都要使用大写。
构造方法
上面我们说了实例(也就是对象)和属性,那么当我们创建一个实例的时候,通常我们想要把它的属性也给它设置好。为了实现这一功能,这时候我们可以添加方法,从而达到这一目的,以上述设置宠物的年龄为例。
// 首先创建一个实例
Pet pet = new Pet();
// 接着调用方法设置年龄
pet.setAge(3);
// 查看设置年龄是否成功
System.out.println(pet.getAge());
可以发现通过上述调用方法的方式是可以完成这一目的的,但假设我们需要设置的属性很多,此时要全部设置属性值时就需要调用许多次 setter
方法,一旦遗漏一个,则实例内部状态就紊乱了。那我们就想了,有没有一种简单点的方法,能够让我们在创建实例对象的同时就把内部属性初始化了呢?
答案是:Yes!🎉🎉🎉
这时候我们就可以用到一类特殊的方法 - 构造方法,以下就来看看这个构造方法的特殊之处。
其实在上面我们创建实例的时候就已经调用了构造方法了,只不过它是没有带任何参数的构造方法。以上述动物类 Pet
为实例,我们来看看如何编写它的构造方法。
public class Pet{
// 名字
public String name;
// 毛色
public String furColor;
// 年龄
public int age;
// 无参构造方法
public Pet(){}
// 带参构造方法
public Pet(String name, String furColor, int age){
this.name = name;
this.furColor = furColor;
this.age = age;
}
}
以上我们只是给出了无参的构造方法和带了所有属性的构造方法,除了上面的两个构造方法之外,我们还可以根据需要创建带有部分属性的构造方法。可以看到,相比于普通的方法,构造方法有着明显的特点:
-
没有返回值:是的,无论是带参还是不带参的构造函数,它们都是没有返回值的,而它也是 每个类默认的构造方法;
-
方法名同类名一样:必须确保构造方法的名字和类名一致,否则它就不是构造方法了;
有了构造方法之后,我们创建实例时就可以直接给它初始化了,而不用再去麻烦地调用各个 setter
方法来初始化实例。
// 调用无参构造方法
Pet pet1 = new Pet();
// 调用有参构造方法
Pet pet2 = new Pet(“柯基”, “黄色”, 1);
🎈 Tips:对于实例的属性值,在未经构造方法初始化时,各数据类型都有默认值,整型默认值为 0
,浮点型默认值为 0.0
,布尔类型默认值为 false
,引用类型默认值为 null
。
引用
既然知道了什么是面向对象以及面向对象中的一些关键知识点如对象、属性、方法的概念,那我们就趁热来看看啥是引用。
所谓引用,其实在之前学习的时候就已经涉及到了。你是否还记得 String
这个特殊的数据类型,其实在我们创建一个 String
对象时,也就创建了一个引用。
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)
复习的面试资料
这些面试全部出自大厂面试真题和面试合集当中,小编已经为大家整理完毕(PDF版)
- 第一部分:Java基础-中级-高级
- 第二部分:开源框架(SSM:Spring+SpringMVC+MyBatis)
- 第三部分:性能调优(JVM+MySQL+Tomcat)
- 第四部分:分布式(限流:ZK+Nginx;缓存:Redis+MongoDB+Memcached;通讯:MQ+kafka)
- 第五部分:微服务(SpringBoot+SpringCloud+Dubbo)
- 第六部分:其他:并发编程+设计模式+数据结构与算法+网络
进阶学习笔记pdf
- Java架构进阶之架构筑基篇(Java基础+并发编程+JVM+MySQL+Tomcat+网络+数据结构与算法)
- Java架构进阶之开源框架篇(设计模式+Spring+SpringMVC+MyBatis)
- Java架构进阶之分布式架构篇 (限流(ZK/Nginx)+缓存(Redis/MongoDB/Memcached)+通讯(MQ/kafka))
- Java架构进阶之微服务架构篇(RPC+SpringBoot+SpringCloud+Dubbo+K8s)
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
.(img-B64K8mss-1713393011927)]
- Java架构进阶之分布式架构篇 (限流(ZK/Nginx)+缓存(Redis/MongoDB/Memcached)+通讯(MQ/kafka))
[外链图片转存中…(img-442bs7hu-1713393011927)]
[外链图片转存中…(img-tJlz2wap-1713393011927)]
[外链图片转存中…(img-HM5QLseR-1713393011927)]
- Java架构进阶之微服务架构篇(RPC+SpringBoot+SpringCloud+Dubbo+K8s)
[外链图片转存中…(img-guDlq3Bz-1713393011928)]
[外链图片转存中…(img-qnOIViyc-1713393011928)]
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!