前言
⾯向对象是解决问题的⼀种思想,主要依靠对象之间的交互完成⼀件事情。以面向对象的方法来处理问题,就不必专注于过程,而是让几个对象之间交互即可解决问题。
一、什么是类?
类是用来对一个对象进行描述的,可以当作是一种物品的分类描述,比如冰箱,吹风机等等,通过类描述实例的对象的属性和功能,比如属性:功率,尺寸,颜色等。功能:冰冻,冷藏等。
二、如何定义类?
1.class关键字
通过class关键字可以定义类,一般来说,在一个java源文件中,只能有一个public修饰的类,而且类名要和.java源文件的名称要相同。也可以定义其他不用public修饰的类在同一文件中,但是一般不会这样去用。
而且类名的命名方法采用大驼峰的原则定义。
在一个类有总共有两大部分组成,成员变量和成员方法,其中成员变量分为静态和非静态,成员方法也分为静态和非静态。静态代表用static修饰的变量或方法。(本篇先讨论非静态)
public class Dog {
//成员变量/属性/字段
// 1.非静态成员变量
// 2.静态成员变量(static修饰)
//------------------------
//成员方法/行为
//1.非静态成员方法
//2.静态成员方法
}
2.成员变量(非静态)
在类中定义的成员变量的同时可以就地初始化,也可以不初始化,系统会自动初始化默认值,关于默认值,有一张图表如下:
其次,在Java的语法规定中,不能直接在类的主体中包含可执行语句,也就是下面代码的第四行就是错误的操作。
public int age;//系统默认初始化 0
public String color;//系统默认初始化 null
public String name = "大黄";//就地初始化
color = "黄色";//错误示范
3.成员方法(非静态)
成员方法在类中定义好后,格式还是和往常一样,标明返回值,方法名,形参列表,而且可以在方法内部调用类中的成员变量。
public void bark() {
System.out.println(name + "正在汪汪汪!");
}
public void wag() {
System.out.println(age + "岁的" + color + "色的" + name + "正在摇尾巴!!");
}
三、实例化对象
在完成了类的定义和完善之后,就可以实例化一个一个的对象了,类和对象的关系就是对象通过类似模具一样的类,得到属于该类的对象。
1.new关键字
实例化对象最主要的是通过new关键字,可以在堆上开辟一块空间,专门来储存这个new出来的对象,同时我们需要拿类名定义的引用,这个引用的位置在栈空间上开辟了一处内存,里面存储了对象的引用也就是地址,拿这个引用来接收地址,并且我们可以通过new,实例化出很多个对象,代码如下:
public static void main(String[] args) {
Dog dog1 = new Dog();
Dog dog2 = new Dog();
}
2.通过对象调用成员
我们可以通过实例出来的对象通过.操作符来访问该对象内部的成员,若有多个对象,每个对象都是一个独立的空间,都有自己的成员。
Dog dog1 = new Dog();
Dog dog2 = new Dog();
dog1.name = "阿黄";
dog2.name = "小黑";
dog1.bark();
dog2.bark();
运行结果如下:
通过打印两个对象引用,会得到两个地址,证明在内部空间真实存在两个对象
System.out.println(dog1);
System.out.println(dog2);
内部大概储存原理如下:
总结
这篇文章介绍了类和对象的概念和关系,以及一些语法规则和内部空间分布,不过关于类和对象的知识点还未整理完,剩余部分留在下篇。