类和对象
如果说前面的知识点是基础的话,那么从这里开始就是Java基础的核心部分了
先说定义
类:将某一类事物中所有的共同点抽离出来,形成一个模板,而这个模板我们在编程中称为类,需要注意的是类只是个概念
对象:依托于某个模板(类)而产生的某个个体,个体是真实存在的
如果还是没有搞明白的话,我想用下面这张图来解释
上图中男孩和女孩仅仅是概念,它代表的是一个群体,而图中的每一个小人儿则是依托于(或者复合)这些概念的个体
# 类的定义
在理清楚概念以后剩下的就是语法了,类也分很多种。今天介绍的是其中最常用并且最基础的一种
类的定义其实并不复杂,涉及到的关键字也只有一个 class
public class Demo1{
}
2
3
# 对象
类似与现实世界一样,只有类没有对象是没有任何用途的。类似于我们都知道钱的概念,可是在你没有拿到一张张人民币之前,这个概念可能对你没有任何用途
在编程中对象的主要作用
方便我们更好去使用某些功能,隐藏一些不必要暴露在外面的细节,使我们的程序更加安全
将我们类中的数据全部加载到内存中,我们通过内存地址可以指向类中的某一个成员
对象的创建方式:**new 该类的构造器();**看到这里有朋友可能有疑问,类的构造器是啥?其实就是和类名相同的一个方法。示例代码如下
public class User{
}
public class Demo1{
public static void main(String args[]){
//创建User类的对象
new User();
}
}
2
3
4
5
6
7
8
9
新的疑问产生,构造器哪里来的?当我们自己没有声明构造器的时候 JVM 会帮我们创建一个,哪有什么岁月静好,只是有人负重前行
到这里其实类和对象的关系已经介绍完了,但是我还想多写一点零散的知识
# 包(package)
很多教程中对于包的概念几乎一带而过,它不重要吗?事实上它很重要,怎么理解这个概念呢?一个包其实就是一个文件夹,不要小看这个文件夹,它的作用如下
把功能相似或相关的类或接口组织在同一个包中,方便类的查找和使用。
如同文件夹一样,包也采用了树形目录的存储方式。同一个包中的类名字是不同的,不同的包中的类的名字是可以相同的,当同时调用两个不同包中相同类名的类时,应该加上包名加以区别。因此,包可以避免名字冲突。
包也限定了访问权限,拥有包访问权限的类才能访问某个包中的类。
定义包的语法格式
package pkg1[.pkg2[.pkg3…]];
# 关键字 import
为了能够使用某一个包的成员,我们需要在 Java 程序中明确导入该包。使用 "import" 语句可完成此功能。
在 Java 源文件中 import 语句应位于 package 语句之后,所有类的定义之前,可以没有,也可以有多条,其语法格式为:
import package1[.package2…].(classname|*);
完整案例
package com.coder163.demo1;
import com.coder163.domain
public class Boss{
public void payEmployee(Employee e){
e.mailCheck();
}
}
2
3
4
5
6
7
8
9
10
# 小结
以上基本上就是包相关的内容。此外当我们不使用集成开发工具(如 IDEA、Eclipse)时编译带有包名的文件时
package com.coder163;
public class Test{
public static void main(String[] args){
System.out.println("Hello World!");
}
}
2
3
4
5
6
7
编译运行
C:\Users\Administrator\Desktop\demo1>javac com/coder163/Test.java
C:\Users\Administrator\Desktop\demo1>java com.coder163.Test
Hello World!
# 批量编译
C:\Users\Administrator\Desktop\demo1>javac -d ./ com/coder163/*.java
2
3
4
5
6
7
8
# 访问权限
包都说了不差这一个,访问权限的控制其实同样重要,常用的权限修饰如下
关键字 | 使用频率 | 控制范围 |
---|---|---|
public:公共的 | 常用 | 随意调用 |
private:私有的 | 常用 | 当类或者类的成员被private修饰时,表示该类的成员只能在本类中使用,一般情况下成员变量会使用private修饰 |
Protected:受保护的 | 较少 | 只能在同一个包中调用 |
Default:默认的 | 一般 | 如果使用的话,在声明部分不要书写任何访问权限 |