Excel迎来30岁生日 v1.0团队共同追忆Excel发展的“峥嵘岁月”(30岁以后的生日)
615
2022-05-30
类与对象
先来用一张图来说说类与对象包括什么:
类:类的定义、包、变量、权限修饰符、方法重载、参数传值、this关键字
对象:对象的定义、对象的创建格式及区别、对象属性和行为的访问、对象的引用比较和销毁
类
类是一组具有相同属性和行为的对象的抽象
举例看看:
public class Heroes { private String name; private String role; static int roleId; final static double PI = 3.1415926; public Heroes(String name, String role) { this.name = name; this.role = role; } public Heroes() { } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getRole() { return role; } public void setRole(String role) { this.role = role; } public void fight(String message) { int id = 0; System.out.println("fight..." + id + ":" + message); } public static void bloodReturning(String home) { System.out.println("回血:" + home); } }
包
Java 中使用 package 语句定义包,package 语句应该放在源文件的第一行,在每个源文件中只能有一个包定义语句,并且 package 语句适用于所有类型(类、接口、枚举和注释)的文件。定义包语法格式如下:
包的命名
Java包的命名规则如下:
包名全部由小写字母(多个单词也全部小写)
如果包名包含多个层次,每个层次用“.”分割
包名一般由倒置的域名开头,比如com. baidu,不要有www
自定义包不能以 java开头
包的使用
在要引用的类名前带上包名作为修饰符
com.dingli.edu.Person person = new com.dingli.edu.Person();
在文件开头使用import引用包中的类
import com.dingli.edu.Person;
在文件前使用import引用整个包
import com.dingli.edu.*;
这里列举一下java文档里的常用包
包
说明
java.lang
Java 的核心类库,包含运行 Java 程序必不可少的系统类,如基本数据类型、基本数学函数、字符串处理、异常处理和线程类等,系统默认加载这个包
java.io
Java 语言的标准输入/输出类库,如基本输入/输出流、文件输入/输出、过滤输入/输出流等
java.util
包含如处理时间的 Date 类,处理动态数组的 Vector 类,以及 Stack 和 HashTable 类
java.awt
构建图形用户界面(GUI)的类库,低级绘图操作 Graphics 类、图形界面组件和布局管理(如 Checkbox 类、Container 类、LayoutManger 接口等),以及用户界面交互控制和事件响应(如 Event 类)
java.awt.image
处理和操纵来自网上的图片的 Java 工具类库
java.wat.peer
很少在程序中直接用到,使得同一个 Java 程序在不同的软硬件平台上运行
java.net
实现网络功能的类库有 Socket 类、ServerSocket 类
java.lang.reflect
提供用于反射对象的工具
java.util.zip
实现文件压缩功能
java.awt.datatransfer
处理数据传输的工具类,包括剪贴板、字符串发送器等
java.sql
实现 JDBC 的类库
java.rmi
提供远程连接与载入的支持
java. security
提供安全性方面的有关支持
成员变量、局部变量、静态变量的区别
注意事项:
局部变量名称可以和成员变量名称一样,在方法中使用的时候,采用的是就近原则。
成员变量
局部变量
静态变量
定义的位置
类中,方法外
方法中,或者方法的形式参数
在类中,方法外
初始化值
有默认初始化值
无,先定义,赋值后才能使用
有默认初始化值
调用方式
对象调用
对象调用,类名调用
存储位置
堆中
栈中
方法区
生命周期
与对象共存亡
与方法共存亡
与类共存亡
别名
实例变量
类变量
权限修饰符区别
public
Protected
Default
private
同一个类
√
√
√
√
同一个包
√
√
√
子类
√
√
√
不同包
√
方法重载
就是在同一个类中,方法的名字相同,参数列表不同(顺序不同、个数不同、类型不同),实现相似的功能,与修饰符、返回值类型无关。我们会觉得方法调用的时候就像调用一个方法一样 。
看看下面的第一个sum()静态方法,里面的形参是int类型; 第二个重载就是都变了方法,形参是double类型;第三个是混合的参数类型。
public class OverLoad { public static void main(String[] args) { sum(5, 8); sum(4.5, 6.5); sum(1, 5, 2.3); } public static void sum(int a, int b) { int sum = a + b; System.out.println(sum); } public static void sum(double c, double d) { double sum = c + d; System.out.println(sum); } public static void sum(int e, int f, double g) { double sum = e + f + g; System.out.println(sum); } }
参数传值
8大基本数据类型,参数传递过程采用值拷贝的方式
public class Demo { public static void main(String[] args) { int a = 10; change(a); System.out.println("main方法中a的值:" + a); } public static void change(int a) { a = a * 2; System.out.println("change方法中a的值:" + a); } }
参数类型为引用类型,参数传递的过程采用引用拷贝的方式
public class Demo { public static void main(String[] args) { Test test = new Test(10); change(test); System.out.println("main方法中a的值:" + test.a); } public static void change(Test test) { test.a = test.a * 2; System.out.println("change方法中a的值:" + test.a); } } class Test { public int a; public Test(int a) { this.a = a; } }
this关键字
关键字this表示当前对象,引用对象自身。 可以用于访问实例的数据域, 尤其是实例变量和局部变量同名时,进行分辨。除此之外,可以在构造方法内部调用同一个类的其他构造方法 。
public class ThisTest { public String name; public int age; public ThisTest(String name, int age) { this.name = name; this.age = age; } public void say() { String name = “tom"; System.out.println("name:" + this.name); } public static void main(String[] args) { ThisTest thisTest = new ThisTest("1810", 20); thisTest.say(); } }
对象
对象是一种个性的表示,表示一个独立的个体,每个对象拥有自己独立的属性,依靠属性来区分不同对象
对象的创建格式
格式一:声明并实例化对象
类名称对象名称=new类名称();
格式二:先声明对象,然后实例化对象
类名称对象名称=null;
对象名称=new类名称();
引用数据类型与基本数据类型最大的不同在于:引用数据类型需要内存的分配和使用。所以,关键字new的主要功能就是分配内存空间,也就是说,只要使用引用数据类型,就要使用关键字new来分配内存空间
两种对象创建格式的区别从内存角度来分析
(1)堆内存(heap):保存对象的属性内容。堆内存需要用new关键字来分配空间
(2)栈内存(stack):保存的是堆内存的地址
访问对象的属性和行为
public class Demo { int id = 12; public Demo() { } public void changeId() { id *= 2; System.out.println(id); } public static void main(String[] args) { Demo demo1 = new Demo(); Demo demo2 = new Demo(); demo2.id = 20; System.out.println("demo1的属性值:" + demo1.id); demo1.changeId(); System.out.println("demo2的属性值:" + demo2.id); demo2.changeId(); } }
对象的引用、比较和销毁
对象引用语法格式:类名引用对象名称
对象的比较:1、==运算符2、equals()方法
对象的销毁:对象的销毁利用的是Java中的垃圾回收机制
(1)对象引用超过其作用范围
(2)将对象赋值为null
关于JAVA类与对象大概就介绍到这里了,感恩能与大家在华为云遇见!希望能与大家一起在华为云社区共同成长。
Java 数据结构
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。