类是一种抽象的数据类型,它是对某一类事物整体的定义,但并不能代表某一个具体的事物
如Person类、Pet类、Car类...
对象是抽象概念的具体实例
如张三就是人的一个具体实例,哈士奇就是宠物的一个具体实例
从认知角度,先有对象后有类。对象,是具体的事物;类,是对对象的抽象
从代码运行角度,先有类后有对象。类是对象的模板
使用new关键字创建对象时,除了分配内存空间之外,还会给对象进行默认的初始化以及对类中构造器的调用
public class Hello {
//一个项目应该只有一个main方法
public static void main(String[] args) {
//类实例化后会返回一个自己的对象
//xm对象就是Student类的具体实例
Student xm = new Student();
xm.name = "小明";
xm.age = 3;
xm.print();
}
}
//创建学生类,抽象的
class Student{
//属性
String name;
int age;
//方法
public void print(){
System.out.println(name + " " + age + "岁");
}
}
类中的构造器也称为构造方法,是在进行创建对象时必须要调用的。构造器具有以下两个特点:
必须和类的名字相同
必须没有返回值类型,也不能写void
public class Hello {
//一个项目应该只有一个main方法
public static void main(String[] args) {
//new 实例化了一个对象
Student student = new Student();
}
}
//创建学生类,抽象的
class Student{
}
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//
class Student {
Student() { //可以看到创建类时,隐式定义了一个方法,其名字和类名一致,无参且没有返回值,这就是构造方法
}
}
public class Hello {
//一个项目应该只有一个main方法
public static void main(String[] args) {
//new 实例化了一个对象
Student student = new Student();
System.out.println(student.name);
}
}
//创建学生类,抽象的
class Student{
String name;
int age;
//1. new对象时,其本质是在调用构造器,其是隐式定义的
//2. 构造器一般用来初始化值
Student(){
this.name = "ty";
}
//如果重载了一个有参构造器,则默认的无参构造器必须显示定义,否则无效,快捷键alt + insert
Student(int age){
this.age = age; //this关键字指定对象的属性,和形参做区分
}
}
原文:https://www.cnblogs.com/taoyuann/p/15234579.html