类是面向对象编程中的核心概念用于描述具有相同属性和行为的对象的抽象模板。它定义了对象的结构包括属性数据成员和方法成员函数。类是静态的在代码编译时就已经确定。对象是类的实例化结果是具体的实体。每个对象拥有类定义的属性和方法但属性值可以不同。对象是动态的在程序运行时创建和销毁。、认识类我们先认识类的定义格式在Java中创建类需要用到class关键字。Java 类中两个核心组成部分成员属性或叫成员变量和成员方法。使用class加一个你需要定义的类名这样就形成了类我定义了一个类名叫Dog接下来就可以在类中定义成员我定义一个狗得有年龄、名字和它吃的这样我们就创建好了一个类那么我们该怎么去调用他们那么这就是对象的实例化接下来我就用一个main函数来调用我上面所写的类应为他是类所以我们就可以用类名加变量来定义然后我们就可以给我们的变量进行赋值采用变量加.来进行赋值赋值后进行输出类中还可以写一些别的属性现在在这个类中包含了方便其调用它的属性和打印这和前面狗的eat一样后面可以调用这样的输出结果也是深得我们的心接下来我们一个类是不是可以定义多个变量经过编译发现也是可以的那么我们就可以创建自己想要的成员变量和变量名this的用法在Java中this的用法有以下几种1.解决变量名冲突当实例变量与方法的参数或局部变量同名时this用于明确指定访问的是实例变量。当形参与局部变量的命名相同时由于int age是局部变量局部变量优先原则左右都是局部变量所以没有引用成员变量若运行的话会出现下面的情况。2.调用当前类的构造方法在构造方法中可以使用this()调用当前类的其他构造方法必须放在构造方法的第一行。public class Example { private int x; private int y; public Example() { this(0, 0); // 调用另一个构造方法 } public Example(int x, int y) { this.x x; this.y y; } }3.返回当前对象实例在方法中返回当前对象时可以使用this。public class Example { public Example getInstance() { return this; // 返回当前对象 } }4.在内部类中访问外部类实例在内部类中this指向内部类实例使用外部类名.this可以访问外部类实例。public class Outer { private int value; public class Inner { public void print() { System.out.println(Outer.this.value); // 访问外部类成员 } } }注意的是this不能在静态方法中使用因为静态方法属于类而非对象实例。构造方法上文中我们给狗的设置用了一个setDog可以给setDog赋值来进行对狗属性的一个改变这里除了用这种方法还可以使用构造方法。构造方法(也称为构造器)是一个特殊的成员方法名字必须与类名相同在创建对象时由编译器自动调用并且在整个对象的生命周期内只调用一次。上面是两种构造方法第一种可以传递两个参数第二种是不传参的。同时实例化对象的时候一定会调用构造方法将setDog注释掉后采用第一种赋值的方法调试发现进入第一种方法中同理若不赋值的话则会进入第二种方法内。这两种构造方法也称为方法的重载。其中没有参数的可以用this来进行替换。那么这个this指向的就是Dog含有两个参数的的构造方法。并且调用的时候this语句必须在第一行。抽象类在面向对象的概念中所有的对象都是通过类来描绘的但是反过来并不是所有的类都是用来描绘对象的如果一个类中没有包含足够的信息来描绘一个具体的对象这样的类就是抽象类抽象类的语法// 抽象类被abstract修饰的类 public abstract class Shape { }在抽象类中我们可以使用抽象方法来表示这个类中的成员/ 抽象类被abstract修饰的类 public abstract class Shape { // 抽象方法被abstract修饰的方法没有方法体 public abstract void draw(); public abstract void calcArea(); // 抽象类也是类也可以增加普通方法和属性 public double getArea(){ return area; } protected double area; // 面积 }注意一个抽象类中可以没有抽象方法但是由抽象方法的类一定的是抽象类。抽象类也是类内部可以包含普通方法和属性甚至构造方法抽象类的特性1.抽象类不能直接实例化对象public abstract class Shape { Shape.shape new Shape() //这种表达是不对的 }2.抽象方法不能用private修饰public abstract class Shape { private abstract void draw(); //抽象方法不能用private修饰 }3.抽象方法不能被final和static修饰因为抽象方法要被子类重写public abstract class Shape { private final void draw(); }4.抽象类必须被继承并且继承后子类要重写父类中的抽象方法否则子类也是抽象类必须要使用abstract修饰public abstract class Shape { public abstract void Drawshape(); } public class Cricle extends Shape{ Override public void Drawshape() { System.out.println(画一个⭕); } //子类重写了父类 的抽象方法 } public abstract class Rect extends Shape{ //该子类也是一个抽象类的话就可以不要称谢父类的抽象方法 }