首页 > 其他分享 >类和对象

类和对象

时间:2024-08-06 11:10:02浏览次数:10  
标签:obj 对象 MyClass new 方法 public

类和对象

什么是类

在面向对象编程(OOP)中,类(Class)是一个蓝图或模板,它定义了一组具有相同属性(变量)和行为(函数或方法)的对象的结构。类是创建对象的基础,对象则是类的实例。

public class Car(){
    //属性
    private String color;
    private int speed;

    // 构造函数
public Car(String color) {
    this.color = color;
    this.speed = 0; // 初始速度为0
}

    // 方法
public void start() {
    speed = 10; // 假设启动时速度为10
}

public void stop() {
    speed = 0; // 停止时速度为0
}

public void accelerate(int increment) {
    speed += increment; // 增加速度
}

   // Getter和Setter方法
public String getColor() {
    return color;
}

public void setColor(String color) {
    this.color = color;
}

public int getSpeed() {
    return speed;
}


}

什么是对象

对象是类的实例

  1. 具体化:对象是现实世界中某些事物的抽象表示,比如一个Car对象可以代表一个具体的汽车。
  2. 状态:对象包含数据,这些数据定义了对象的当前状态。这些数据通常存储在对象的属性或字段中。
  3. 行为:对象可以执行操作,这些操作通常通过对象的方法或函数来实现。
  4. 唯一性:每个对象都有其唯一性,即使两个对象属于同一个类,它们也可以有不同的状态。
  5. 封装:对象封装了自己的数据和行为,隐藏了内部的实现细节,只通过方法暴露操作接口。
  6. 交互:对象之间可以相互交互,通过发送消息来调用彼此的方法。
  7. 继承:对象可以是另一个对象的子类,继承父类的属性和方法。
  8. 多态:对象可以表现出多种形式,通过重载和重写方法,同一个接口可以有多种不同的实现。

创建对象的过程通常称为实例化

// 创建Car类的一个对象
Car myCar = new Car("Red");
//myCar是Car类的一个实例,它有自己的状态(颜色为"Red",速度为0),并且可以执行start等行为。

获取对象的方法

  1. 直接访问

    • 如果对象的属性或方法是公开的(使用public访问修饰符),可以直接通过对象实例访问它们。

      public class MyClass {
          public int value = 10;
          public void display() {
              System.out.println("Value is " + value);
          }
      }
      
      MyClass obj = new MyClass();
      int val = obj.value; // 直接访问属性
      obj.display(); // 直接调用方法
      
  2. 通过Getter和Setter方法

    • 对于私有属性,通常通过公共的Getter和Setter方法来访问和修改。

      private int value;
      
      public int getValue() {
          return value;
      }
      
      public void setValue(int value) {
          this.value = value;
      }
      
  3. 构造方法

    • 构造方法用于在创建对象时初始化对象的状态。

      public MyClass(int initialValue) {
          this.value = initialValue;
      }
      
  4. 方法调用

    • 对象的方法可以通过对象实例来调用,无论这些方法是实例方法还是静态方法。

      obj.instanceMethod(); // 调用实例方法
      MyClass.staticMethod(); // 调用静态方法
      
  5. 通过数组或集合

    • 如果对象存储在数组或集合中,可以通过索引或迭代器来访问它们。

      MyClass[] objects = new MyClass[10];
      objects[0] = new MyClass();
      // 或者使用集合框架中的迭代器
      List<MyClass> list = new ArrayList<>();
      list.add(new MyClass());
      for (MyClass item : list) {
          item.someMethod();
      }
      
  6. 通过反射

    • Java的反射API允许在运行时动态地发现和操作对象的属性和方法。

      Class<?> clazz = obj.getClass();
      Method method = clazz.getMethod("someMethod");
      method.invoke(obj);
      
  7. 通过序列化

    • 对象可以被序列化成字节流,之后可以被反序列化回对象。

      ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("file.obj"));
      out.writeObject(obj);
      // ...
      ObjectInputStream in = new ObjectInputStream(new FileInputStream("file.obj"));
      MyClass deserializedObj = (MyClass) in.readObject();
      
  8. 通过克隆

    • 对象可以通过克隆技术创建一个副本,这通常通过实现Cloneable接口和重写clone()方法来实现。

      obj.clone(); // 创建对象的副本
      
  9. 通过代理模式

    • 代理模式允许通过代理对象来访问目标对象的方法,可以在调用前后添加额外的处理逻辑。

      MyInterface proxy = (MyInterface) Proxy.newProxyInstance(
              MyInterface.class.getClassLoader(),
              new Class[] { MyInterface.class },
              new InvocationHandler() {
                  @Override
                  public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
                      // 调用目标对象的方法
                      return method.invoke(target, args);
                  }
              }
      );
      

标签:obj,对象,MyClass,new,方法,public
From: https://www.cnblogs.com/jmy3/p/18344734

相关文章

  • 对象序列化和反向序列化
    对象序列化和反向序列化目录对象序列化和反向序列化对象序列化:对象反向序列化:注意事项:在Java中,对象序列化是指将对象的状态信息转换为可以存储或传输的形式的过程。序列化的对象可以被写入到文件、数据库或通过网络传输。反向序列化,也称为反序列化,是序列化过程的逆过程,即将序列......
  • Element-plus UI框架获取表格中某一行的对象数据
    在Vue3中,#default="scope"是用于指定一个具名插槽(namedslot)的默认插槽,并且向该插槽传递作用域属性(scopedprops)。这个语法是在Vue3的模板编译器中引入的,它取代了Vue2中使用的slot-scope。使用Element-plusUI框架获取表格中某一行的数据,如下面的示例代码:<template>......
  • 对象序列化与反序列化
    对象序列化与反序列化在Java中,对象序列化是指将对象的状态信息转换为可以存储或传输的形式的过程。反序列化则是将这些信息恢复为对象的过程。Java通过实现java.io.Serializable接口来支持对象的序列化和反序列化。以下是对象序列化和反序列化的基本概念和步骤:1.使类实现S......
  • 面向对象--方法
    目录1.方法的好处2.方法的定义和调用3.方法之间的关系4.方法里面的参数5.注意6.方法重载7.方法的局部变量1.方法的好处简化代码,提高代码复用性,一次编写多次调用2.方法的定义和调用一段具有独立功能的代码块,需要先定义才能调用方法定义格式:publicstaticvoidmain方法名(){......
  • Java之类和对象
    目录static关键字1修饰属性2修饰方法 final构造方法基本语法this关键字代码块定义普通代码块 构造代码块静态代码块匿名对象toString 总结static关键字1修饰属性Java的静态属性和类相关,和具体的实例无关.换句话说,同一个类的不同实例共用同一个静......
  • 权限,锁定解锁用户接口,发送短信接口,drf部分源码分析APIView源码,新的Request对象,序
    Ⅰ权限【一】ACL(AccessControlList,访问控制列表)#ACL(AccessControlList,访问控制列表) 将用户直接与与权限对接permission表iduser_id权限名11开直播21评论【二】RBAC(Role-BasedAccessControl,基......
  • C++类和对象
    文章目录C++类和对象类和对象1.类和对象的基本概念注意事项:2.类的定义和成员注意事项:3.构造函数和析构函数注意事项:4.访问控制和封装注意事项:5.this指针注意事项:6.静态成员注意事项:7.常量成员函数和常量对象注意事项:8.友元函数和友元类注意事项:9......
  • Python面向对象课程设计
    面向对象程序设计面向对象编程(Object-orientedProgramming,简称OOP),是一种封装代码的方法。面向对象中,常用术语包括:类:可以理解是一个模板,通过它可以创建出无数个具体实例。比如,前面编写的tortoise表示的只是乌龟这个物种,通过它可以创建出无数个实例来代表各种不同特征的乌龟(......
  • java面对对象基础
    1.对象的内存布局类实例化为对象:类实例化为对象的语句一定要加括号,否则编译不通过//类名生成对象名=new类名()//类名生成对象名=new类名()ToolMytool=newTool();classTool{ publicbooleanoddOreven(intnum){ if(num%2!=0){ returntrue; }else{ retur......
  • 重学面向对象-基础篇02包和访问控制
    包和访问控制基础概念包:用于区分类位置,将类分类package包的命名规则:英文和数字的组合,最好以域名形式com.test访问权限控制:private:私有,无法被除当前类以外的任何位置访问什么都不写:默认,只能被类本身和同包中的其他类访问protected:受保护,标记为受保护的内容可以能被类本身和......