
详细版脑图
简单的定义类及使用类示例
import java.time.LocalDate;/*** 测试类,专门用于测试*/public class Test {public static void main(String[] args) {// 构造一个新的Dog类对象(或者可以说创建一个Dog类的实例),aDog就是对象变量,存储着新构建Dog对象的地址(引用)Dog aDog = new Dog();// 调用类的方法来修改实例域aDog.setColor("black");aDog.setMasterName("YangYang");aDog.setType(1);System.out.println(aDog.getColor());// 构造另一个Dog类对象Dog anotherDog = new Dog("yellow", 60.5, "洋洋", 1);System.out.println(anotherDog.getColor());}}/*** 定义一个类 ———— 狗*/class Dog {/*** 描述:狗的颜色(类的域)* 修饰符:private修饰,表示私有,只有Dog类的实例(即构造的对象)才能够访问(封装、对外隐藏)**/private String color;/*** 狗主人的名字*/private String masterName;/*** 狗的品种,1:金毛 2:拉布拉多 3:泰迪 4:哈士奇*/private Integer type;/*** 初始化的时间*/private LocalDate createTime;/*** 最近的更新时间*/private LocalDate updateTime;// 初始化块,在创建Dog类的实例的时候会执行(建议将初始化块放在域定义之后){type = 1;}/*** 狗的ID【静态域】*/public static int id = 0;/*** 狗有四只脚【静态常量】(静态常量一般全大写,通过下划线_分割每个字符)*/public static final int FEET_NUM = 4;// 静态初始化块,在第一次加载类时会触发static {id = 1;}/*** 构造方法,名称与类名相同,使用new Dog()时调用的就是这个方法*/public Dog() {}/*** (带参)构造方法,名称也与类名相同,使用new Dog("red", 120, "洋洋", 1)时调用的就是这个方法* 重载相关的描述:这里构造器Dog其实使用了Java重载的特性,才能有多个相同名称,但不同参数(类型)组合的构造器*/public Dog(String color, Double size, String masterName, Integer type) {this.color = color;this.masterName = masterName;this.type = type;this.createTime = LocalDate.now();// 直接将createTime的引用赋值给updateTime,减少重复构建对象this.updateTime = this.createTime;}/*** 狗的id是否大于0【静态方法】(只能够访问静态域或静态常量)*/public static boolean dogIdBiggerThanZero() {// 访问非静态域/非静态常量,无法执行// String masterName = this.masterName;// 但可以访问静态常量和静态域int feetNum = FEET_NUM;return id > 0;}/*** 定义类的方法,用于Dog类的实例(即构造的对象)获取内部数据或修改内部数据* 如:getColor方法用于获取颜色(访问器方法),setColor用于修改颜色(更改器方法)* 其中setColor后面括号包含的color即为显示参数,方法内的this.color即为隐士参数*/public String getColor() {return this.color;}public void setColor(String color) {this.color = color;}public String getMasterName() {return this.masterName;}public void setMasterName(String masterName) {this.masterName = masterName;}public Integer getType() {return this.type;}public void setType(Integer type) {this.type = type;}}
提问环节
- Java8新的时间类与旧的Date类有什么区别?
- 创一个类的实例的过程中,在Java虚拟机中(JVM)到底发生了什么?
- 参考JVM内存区域与内存溢出内容
- 更多参考
- 几种访问权限详解?它们之间到底有什么差别?
- 菜鸟教程 | Java修饰符描述的比较详细了
- 类中的静态域、静态常量、静态方法是在类第一次加载的时候会触发,那么什么时候会进行类的第一次加载?
- 超类Object到底是一个怎么样的类?它底层又是如何实现的?
