尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

4.3自定义类

4.3自定义类 1.class Xxx{field字段 constructor构造器 method方法}class Employee { //实例字段 private String name; private double salary; private LocalDate hireDay; //构造器总是和new操作符一起调用 public Employee(String n,double s,int year,int month,int day) { namen; salarys; hireDayLocalDate.of(year,month,day); } //方法 public String getName() { return name; } public void raiseSalary(double byPercent) { double raisesalary*byPercent/100; salaryraise; } }2.使用多个源文件把不同的类写进不同的.java文件里然后让它们互相调用。同一个包下package不用import不同包下用import。3.PS:1为什么说String是一个类在 Java 中String被定义在java.lang包中源码开头就是public final class String意味着这个类是最终版不能有子类。它和我们自己写的class Person本质一样都是“引用数据类型”。关键颠覆认知点Java 给String开了“语法外挂”你可以直接用双引号abc写字符串而不用new这让你误以为它是基本类型。但它在内存中依然是堆里的对象和LocalDate毫无区别。2int、double是基本数据类型基本类型直接存数值存在栈中没有方法可调用你不能写int a 5; a.toString();。基本类型只有八种整数类byte字节、short短整、int整型、long长整小数类float单精度、double双精度字符类char单个字符真假类boolean布尔值true/falseString、LocalDate是引用数据类型存的是堆内存地址拥有丰富的方法你可以写abc.length()。4.varvar关键字只能用于方法中的局部变量参数和字段的类型必须声明。我们不会对数值类型使用var如int、long、double这样你就不用当心00L0.0之间的区别。局部变量public void myMethod() { // ✅ 正确方法内部立即赋值 var name 张三; // 推断为 String var today LocalDate.now(); // 推断为 LocalDate var list new ArrayListString(); // 推断为 ArrayListString }参数public void setInfo(var id, var name) {}//不行字段public class Person { var name; //不行 private String address;//可以 }5.null如果对null值应用一个方法会产生一个NullPointerException异常解决方法requireNonNullElse、requireNonNull6.隐式参数、显示参数public void raiseSalary(double byPercent) { double raisesalary*byPercent/100; salaryraise; }隐式参数salary关键字this指示隐式参数形式this.salary显示参数byPercent局部变量7.封装即类字段访问器方法,字段更改器方法注意不要编写返回可变对象引用可变类的访问器方法如Date类型存在更改器方法对其调用更改器方法会改变对象的私有状态首先应该对它进行克隆return (Date)hireDay.clone();P1138.final差不多对应其它语言中的常量但是每个对象都存一份相同的字符串不可变类类中的方法都是访问器方法1final变量可以不赋初值但必须在构造器Constructor中给它赋值。private final int id12138//赋初值且之后不能再改 private final int id; // 没有赋初值 public Person(int id) { this.id id; // 必须在构造器里赋值且之后不能再改 }2final修饰变量final int MAX_SPEED 120; final LocalDate date LocalDate.now();基本类型变量数值不能再做修改引用类型变量不能再指向其他对象但“遥控器”指向的对象本身内部是可以被修改的如果它是可变类的话。eg:由于LocalDate类是不可变类即类中方法均为访问器方法对于值的修改是基于对象的值计算出新值并以新对象的形式返回不是对原对象的修改。date LocalDate.of(2026, 8, 7);不行。而Date类这种可变类可以使用date.setTime();修改这个对象的值。3final修饰方法禁止子类重写public class Parent { public final void criticalLogic() { System.out.println(核心算法); } }4final修饰类无法被继承public final class Math { // 你无法 extends Math // ... }
返回列表