类的基础知识与应用

1,175 阅读7分钟

问题1:什么是类?

回答:类是面向对象编程中的一个概念,它是一种抽象的数据类型,用于描述具有相同属性和方法的对象集合。类可以看作是一种模板,用于创建对象。

问题2:类能做什么?

回答:类可以用于创建对象,对象是类的实例化。通过类,我们可以定义对象的属性和方法,以及对象之间的关系。类还可以用于封装数据和行为,从而实现数据的安全性和代码的复用性。

问题3:类的原理原理是什么?

回答:类的实现基于面向对象编程的三大特性:封装、继承和多态。封装指的是将数据和行为封装在一个类中,从而实现数据的安全性和代码的复用性。继承指的是子类可以继承父类的属性和方法,从而实现代码的复用性和扩展性。多态指的是同一个方法可以被不同的对象调用,从而实现代码的灵活性和可扩展性。类的实现还依赖于编程语言的语法和语义规则,例如Java中的类必须有构造方法和访问修饰符等。

问题4:类的分类

  1. 按照作用域划分:公共类、私有类、受保护类、默认类等。
  2. 按照继承关系划分:父类、子类、接口、抽象类等。
  3. 按照功能划分:实体类、工具类、异常类、枚举类等。
  4. 按照访问方式划分:实例类、静态类、内部类等。
  5. 按照数据类型划分:基本数据类型、引用数据类型等。

问题5:不同类介绍

公共类

公共类是指可以被其他类访问的类,通常用于定义公共的方法和属性,以便其他类可以继承或使用这些方法和属性。

私有类

私有类是指只能在当前类中被访问的类,通常用于实现一些内部逻辑或辅助方法,不对外暴露。

受保护类

受保护类是指只能被当前类和其子类访问的类,通常用于实现一些需要继承的方法和属性。

默认类

默认类是指没有修饰符的类,只能被同一包中的其他类访问,通常用于实现一些包内部的逻辑。

父类

父类是指被其他类继承的类,通常包含一些通用的方法和属性,以便子类可以继承和重写这些方法和属性

子类

子类是指继承自父类的类,通常可以重写父类的方法和属性,以实现自己的逻辑。

接口

接口是指一组抽象方法的集合,通常用于定义一些规范和约束,以便其他类可以实现这些接口并按照规范实现方法。

抽象类

抽象类是指不能被实例化的类,只能被继承,通常包含一些抽象方法和属性,以便子类可以继承和实现这些方法和属性,抽象类也可以用来限制子类的行为,强制子类实现某些方法。(关于抽象类下面会列举一个小案例)

实体类

实体类是指数据库的实体对应的类,通常包含一些属性和方法,以便对实体进行操作和管理。

工具类

工具类是指包含一些静态方法的类,通常用于实现一些通用的功能,例如日期处理、字符串处理等。

  • 异常类:异常类是指用于**处理程序运行时出现的异常情况**的类,通常包含一些异常类型和处理方法。

  • 枚举类:枚举类是指**包含一组固定值的类**,通常用于表示一些状态或类型,例如颜色、性别等。

  • 实例类:实例类是指可以**被实例化的类**,通常包含一些实例方法和属性,以便对实例进行操作和管理。

  • 静态类:静态类是指包含一些**静态方法和属性的**类,通常用于实现一些通用的功能,例如数学计算、文件操作等。

  • 内部类:内部类是指定义在**其他类内部的类**,通常用于实现一些私有的逻辑或辅助方法,不对外暴露。

  • 同一包下的类:同一包下的类是指定义在同一个包中的类,可以直接访问和调用彼此的方法和属性。

  • 不同包下的类:不同包下的类是指定义在不同包中的类,需要通过导入包的方式才能访问和调用彼此的方法和属性。

抽象类的使用小案例:

我们定义了一个抽象类Shape,它有一个抽象方法area()和一个抽象方法toString(),还有一个非抽象方法getColor()。Circle和Rectangle类都继承自Shape类,并实现了它的抽象方法。在Main类中,我们创建了一个Circle对象和一个Rectangle对象,并调用它们的toString()方法来输出它们的颜色和面积。


abstract class Shape {
   String color;
   
   abstract double area();
   
   public Shape(String color) {
      this.color = color;
   }
   public String getColor() {
      return color;
   }
  public abstract String toString();
 
}

class Circle extends Shape {
   double radius;

   public Circle(String color, double radius) {
      super(color);
      this.radius = radius;
   }

   @Override
   double area() {
      return Math.PI * Math.pow(radius, 2);
   }

   @Override
   public String toString() {
      return "Circle color is " + super.color + " and area is : " + area();
   }
}

class Rectangle extends Shape {
   double length;
   double width;

   public Rectangle(String color, double length, double width) {
      super(color);
      this.length = length;
      this.width = width;
   }

   @Override
   double area() {
      return length * width;
   }

   @Override
   public String toString() {
      return "Rectangle color is " + super.color + " and area is : " + area();
   }
}

public class Main {
   public static void main(String[] args) {
      Shape s1 = new Circle("Red", 2.2);
      Shape s2 = new Rectangle("Yellow", 2, 4);

      System.out.println(s1.toString());
      System.out.println(s2.toString());
   }
}

问题6:不同类作用是根据修饰符而决定的

访问修饰符包括:

  • public:公共的,可以被任何类访问。
  • private:私有的,只能被同一个类中的方法访问。
  • protected:受保护的,只能被同一个类或其子类中的方法访问。
  • default(默认):没有修饰符,只能被同一个包中的类访问。

非访问修饰符包括

  • static:静态的,可以在不创建对象的情况下访问。
  • final:最终的,表示该变量或方法只能被赋值一次或者只能被调用一次。
  • abstract:抽象的,只能用于抽象类和抽象方法。
  • synchronized:同步的,用于多线程编程,确保同一时间只有一个线程可以访问该方法或代码块。
  • transient:瞬态的,用于序列化,表示该变量不需要被序列化。
  • volatile:易变的,用于多线程编程,确保该变量在多个线程中的可见性。

以上就是关于本次内容Java程序的基本结构:类

大纲是围绕以下内容开展,我们期待和大家下次相遇:内容如有错误的地方,希望大家指正。

Java程序的基本结构:类、方法、变量、语句、注释。 Java中的数据类型:基本数据类型(byte、short、int、long、float、double、char、boolean)和引用数据类型(类、接口、数组)。 Java中的运算符:算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符、三目运算符。 Java中的流程控制语句:if语句、switch语句、for循环、while循环、do-while循环、break语句、continue语句、return语句。 Java中的数组:一维数组、二维数组、数组的初始化、数组的遍历、数组的排序、数组的复制。 Java中的面向对象编程:类和对象、封装、继承、多态、抽象类、接口、内部类。 Java中的异常处理:异常的分类、异常处理机制、try-catch-finally语句、throw语句、throws语句。 Java中的集合框架:Collection接口、List接口、Set接口、Map接口、Iterator接口、ArrayList类、LinkedList类、HashSet类、HashMap类。 Java中的线程:线程的创建、线程的生命周期、线程的同步、线程的通信、线程池。