Java基础学习(一)对象与类、构造方法、方法重载、属性与修饰符的概念理解---来自大话设计模式

本文结合Java与个人理解,介绍了对象与类的概念,对象是自包含实体,类是对象抽象集合。还阐述了构造方法用于类初始化,方法重载可创建同名不同参数类型的方法,以及属性与修饰符,属性类似字段,修饰符有public和private,开发中常用private修饰属性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

不完全与大话设计模式相同,结合了java与个人的理解。

对象与类

对象是一个自包含的实体,用一组可识别的特性和行为来标识。
类是具有相同的属性和功能的对象的抽象的集合。

很好理解,举个例子:

public class User {
  private String name;
  private int age;
  // getter/setter...
}

User就是一个类。

User user1 = new User();
User user2 = new User();

user1和user2就是两个实例,或者两个对象。实例就是一个真实的对象。
new User()这个操作就是把一个对象实例化。
这个操作实际可以拆分成两部:

  1. 声明一个对象 User user1
  2. 将对象实例化 user1 = new User()

构造方法

构造方法,又叫构造函数,其实就是对类进行初始化。构造方法与类同名,无返回值,也不需要void,在new的时候调用。
例如上述的new User()操作,User()就是构造方法。

所有的类都有构造方法,如果你不编码,则系统默认生成空的构造方法,若你有定义的构造方法,那么默认的构造方法就会失效。
将上述的User类进行调整,调整后如下:

public class User {
  private String name;
  private int age;
  public User(String name,int age){
    this.name = name;
    this.age = age;
  }
  // getter/setter...
}

此时再使用new User()时会有报错,因为此时该类已有构造方法,默认的空的构造方法就会失效。应该采用new User("张三",20)的方法进行对象的实例化。

方法重载

方法重载提供了创建同名的多个方法的能力,但这些方法需使用不同的参数类型。
简单来说就是方法名相同,参数类型不同。
继续对上述User类进行改造:

public class User {
  private String name;
  private int age;
  public User(String name,int age){
    this.name = name;
    this.age = age;
  }
  public User(){
  }
  public User(String name){
    this.name = name;
  }
  // getter/setter...
}

User()构造方法、User(String name)构造方法,都是是对User(String name,int age)构造方法进行了重载。这样new User()new User("张三")new User("张三",20)都可以对对象进行实例化。
方法重载的意义在于,可以在不改变原方法的基础上,新增功能。

属性与修饰符

属性是一个方法或一对方法,但在调用它的代码看来,它是一个字段,即属性适合于以字段的方式使用方法调用的场合。
简单来说,上述User类中,nameage就是两个属性。

public和private都是修饰符。public表示它所修饰的类成员可以允许其他任何类来访问,俗称公有的。而private表示只允许同一个类中的成员访问,其他类包括他的子类无法访问,俗称私有的。

属性有两个方法get和set。get访问器没有显示设置参数,返回与声明的属性相同的数据类型,表示的意思是调用时可以得到内部字段的值或引用;set访问器有一个和属性相同数据类型的参数,它的作用是调用属性时可以给内部的字段或引用赋值。

继续完善上述User类:

public class User {
  private String name;
  private int age;
  
  public User(String name,int age){
    this.name = name;
    this.age = age;
  }
  
  public String getName(){
    return name;
  }

  public int getAge(){
    return age;
  }
  public void setAge(int age){
    this.age = age;
  }
}

在实际开发过程中,类的属性一般都用private来修饰,调用方法采用public来修饰,为了防止外部直接对对象进行操作。比如修改后的User类,当业务逻辑为:
只允许实例化一个用户时对用户进行命名(即name的赋值)操作,命名完成后,只允许修改年龄,不允许修改姓名
时,如果name采用public修饰,则无法对name属性进行有效的控制。

例如定义一个用户User zhangsan = new User("张三", 18)
当需要获取用户姓名时,可以调用zhangsan.getName()方法,由于name属性是private,所以不能通过zhangsan.name = "李四"操作对姓名进行修改。而当需要将年龄修改为时,由于有age属性有相应的public修饰的set方法可以调用,所以可以采用zhangsan.setAge(20)方法进行修改。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值