小型深圳网站页面设计,甘肃城乡建设局安全质量网站,上海企业名录大全官网,网站建设 提成#x1f387;个人主页#xff1a;Ice_Sugar_7 #x1f387;所属专栏#xff1a;快来卷Java啦 #x1f387;欢迎点赞收藏加关注哦#xff01; 类和对象 #x1f349;类的定义#x1f34c;类的实例化 #x1f349;this引用#x1f349;对象的构造及初始化#x1f34c;… 个人主页Ice_Sugar_7 所属专栏快来卷Java啦 欢迎点赞收藏加关注哦 类和对象 类的定义类的实例化 this引用对象的构造及初始化构造方法就地初始化 访问限定符包导入包中的类自定义包 写在最后 类的定义
// 创建类
class ClassName{field; // 字段(属性) 或者 成员变量method; // 行为 或者 成员方法
}●class为定义类的关键字 ●ClassName为类名 ●{}中为类的主体
比如定义一个学生类
class Student {public String name; //名字public String sex; //性别public int age; //年龄public void Study() {System.out.println(name 在学习);}
}关于类有几点需要注意 ①一般一个文件当中只定义一个类 ②main方法所在的类一般要使用public修饰 ③public修饰的类必须要和文件名相同
类的实例化
定义一个类就相当于定义了一个新的类型自定义类型有点像结构体。要使用它的话就需要对类进行实例化创建对象 在java中使用new配合类名来实例化对象使用.来访问对象的成员变量和成员方法
public static void main(String[] args) {Student student new Student(); //实例化一个对象student.name Sugar;student.sex male;student.age 21;student.Study();
}this引用
this引用是成员方法传参时一个隐藏的形参指向当前对象。也就是说谁调用成员方法this就指向谁 成员方法中所有成员变量的操作都是通过该引用去访问建议访问成员变量时前面加上this
注意这里的成员方法指的是非静态成员方法静态成员方法没有this指针后面讲
public class Date {public int year;public int month;public int day;public void setDay(int year, int month, int day){this.year year;this.month month;this.day day;}public void printDate(){System.out.println(this.year / this.month / this.day);}
}对象的构造及初始化
Java当中局部变量定义后需要初始化才能使用不然会报错 但是类中的成员变量在类实例化后如果不进行初始化那么对于内置类型会自动初始化为0对于引用类型则会初始化为null这种初始化方式与接下来要讲的构造方法息息相关
构造方法
构造方法是一个特殊的成员方法方法名就是类名在创建对象时由编译器自动调用并且在整个对象的生命周期内只调用一次 public Student(String name, String sex, int age) {this.name name;this.sex sex;this.age age;}注意 ①构造方法没有返回值类型设置为void也不行 ②一般使用public修饰 ③可以重载根据不同的需求提供不同参数的构造方法
如果你没写构造方法那Java会自动提供一个不带参数的默认的构造方法但如果写了那就不会提供 默认构造方法会将内置类型和自定义类型分别初始化为0和null
到这里我们可以知道对象实例化过程主要分为两步 ①为对象分配内存在堆区为对象开辟一块内存空间并返回一个引用即对象地址这个引用变量本身存储在栈区 ②调用合适的构造方法
就地初始化
就是在声明成员变量时直接给出初始值。代码编译完成后编译器会将所有给成员初始化的这些语句添加到各个构造方法中 如果构造方法中已经有对成员初始化的语句那么就会覆盖掉就地初始化的值 public String name Sugar; //名字public String sex male; //性别public int age 21; //年龄public static void main(String[] args) {Student student new Student(Zhangsan); student.Print();}运行结果 访问限定符
不同访问限定符修饰的成员变量/成员方法他们的访问权限不同如下表 其中default是默认的访问限定符。如果某个成员变量/方法没有用限定符修饰那么编译器会自动加上不用自己写 包
在面向对象体系中为了更好地管理类把多个类收集在一起成为一组称为软件包。包是类、接口等的封装机制的体现
包还有一个重要的作用在同一个工程中允许存在同名的类只要处在不同的包中就ok
导入包中的类
Java 中已经提供了很多现成的类供我们使用 比如Date类我们可以使用 java.util.Date 导入 java.util 这个包中的 Date类
import java.util.Date;class Test {public static void main(String[] args) {Date date new Date();// 得到一个毫秒级别的时间戳System.out.println(date.getTime());}
}如果需要使用 java.util 中的其他类, 可以使用 import java.util.*它会自动识别是不是包里的类 但是最好还是显式指定要导入的类名不然可能会出现冲突比如
import java.util.*;
import java.sql.*;
public class Test {public static void main(String[] args) {// util 和 sql 中都存在一个 Date 这样的类, 此时就会出现歧义, 编译出错Date date new Date();System.out.println(date.getTime());}
}这种情况下就要用完整的类名如下
import java.util.*;
import java.sql.*;
public class Test {public static void main(String[] args) {java.util.Date date new java.util.Date();System.out.println(date.getTime());}
}自定义包
基本规则 ●在文件的最上方加上一个 package 语句指定该代码在哪个包中 ●包名需要尽量指定成唯一的名字通常会用公司的域名的颠倒形式 ●包名要和代码路径相匹配。例如创建 com.Bilibili.demo1 的包那么会存在一个对应的路径 com/Bilibili/demo1 来存储代码 ●如果一个类没有 package 语句那么这个类会被放到一个默认包src 我们在包中新建一个类test1
然后可以看到我们磁盘上的目录结构已经被 IDEA 自动创建出来了
同时还可以看到新创建的 test1.java 文件的最上方出现了一个 package 语句 写在最后
以上就是本篇文章的全部内容如果你觉得本文对你有所帮助的话那不妨点个小小的赞哦比心