目录
前言:
一.定义:
1.构造方法的定义:
2.普通方法的定义:(类似于C语言的自定义函数,java中叫方法)
3.两者的区别:
二.用法:
1.构造方法的使用:
三.注解:
【1】.无参构造方法:
【2】.带参构造方法:
【3】.get方法:
【4】.set方法:
【5】.方法重载:
方法是什么:方法是用于执行特定任务的一段代码。方法是在类中定义的,用于组织和封装代码,以便在需要时进行重复使用。
方法的优点:提高了代码大复用性和灵活性,简化了代码。
构造方法是用于创建对象,并给对象赋值的特殊方法。在Java中,每个类都可以定义自己的构造方法,通过关键字 new
创建一个类的实例时,系统会自动调用该类的构造方法来完成对象的初始化。
例如:
public class Person //Person类
{
private String name;
private int age;
// 无参构造方法【1】文末有解释
public Person()
{
this.name = "unknown";
this.age = 0;
}
// 带参构造方法【2】
public Person(String name, int age)
{
this.name = name;
this.age = age;
}
// getter方法,获取某属性的值【3】
public String getName()
{
return name;
}
public int getAge()
{
return age;
}
// setter方法,赋值【4】
public void setName(String name)
{
this.name = name;
}
public void setAge(int age)
{
this.age = age;
}
}
创建对象:
Person person1 = new Person(); // 使用无参构造方法创建对象并初始化属性
person1.setName("张三");
person1.setAge(20);
Person person2 = new Person("李四", 22); // 使用带参构造方法创建对象并初始化属性
System.out.println(person1.getName() + "的年龄是" + person1.getAge());
System.out.println(person2.getName() + "的年龄是" + person2.getAge());
Java中的普通方法指的是类中定义的一般方法,不是构造方法、静态方法或抽象方法的方法。普通方法可以访问本类中的所有成员变量和其他方法,也可以对这些成员变量(上一节讲过)进行修改。
公式:(访问权限修饰符有专门一期有博客,同学们可以点击查看)
[访问权限修饰符] 返回值类型 方法名(参数列表)
{
// 方法实现语句
}
例如:
public Person(String name, int age)
{
this.name = name;//this.后面指的是本类中定义的name,与方法中的不一样,
//学过C语言的同学对函数了解的话就容易看懂
this.age = age;
}
▲注意:
其中,访问修饰符、返回值类型、方法名和参数列表都是可选的。如果没有显示指定访问修饰符,则默认为包级私有(即同一个package中的其他类可以访问),如果没有指定返回值类型,则可以用 void
关键字表示方法没有返回值。
构造方法在创建对象时自动执行,用于初始化对象的属性;而普通方法需要在对象创建后才能被调用。
构造方法的名称与类名相同,没有返回值;而普通方法的名称可以任意定义,有返回值或没有返回值。
构造方法可以重载【5】,即一个类可以有多个不同参数列表的构造方法;而普通方法也可以重载。
在一个构造方法中可以使用 super
关键字来调用父类的构造方法;而普通方法不能直接调用父类的方法。
如果一个类没有定义构造方法,Java 会自动提供一个无参构造方法;如果一个类中已经定义了有参构造方法,但也需要使用无参构造方法,则必须显式地在类中定义一个无参构造方法。
总之,构造方法是一种特殊的方法,它有其独特的作用和特点,主要用于对象的初始化。而普通方法则可以完成各种类的具体操作和实现功能。
使用构造方法创建对象时,首先需要通过关键字 new
调用指定的构造方法。在调用构造方法时,可以向其传递参数,这些参数被称为实参。构造方法执行完毕后,会返回一个对新创建对象的引用,可以将该引用保存在一个变量中,以便之后对该对象进行操作。
例如:
public class Person
{
private String name;
private int age;
// 构造方法1
public Person()
{
this.name = "unknown";
this.age = 0;
}
// 构造方法2
public Person(String name, int age)
{
this.name = name;
this.age = age;
}
// get和set方法省略
public static void main(String[] args)
{
// 使用构造方法1创建对象
Person person1 = new Person();
// 使用构造方法2创建对象
Person person2 = new Person("张三", 20);
// 对person1和person2进行操作
// ...
}
}
2.普通方法的使用省略......
public Person()
{
this.name = "unknown";
this.age = 0;
}
无参构造方法是指没有参数的构造方法,它在类中定义一个新的对象实例,但不需要传入任何参数。一般情况下,无参构造方法用来初始化对象的属性,给属性赋默认值。 如果一个类没有定义构造方法,Java 会自动提供一个无参构造方法。如果一个类中已经定义了有参构造方法,但也需要使用无参构造方法,则必须显式地在类中定义一个无参构造方法。
带参构造方法是用来在创建对象的同时为对象的属性赋初值的一种方法,可以通过定义多个带参构造方法来为对象提供不同的初始化方式。如果在编写类时只添加了带参构造方法而未添加无参构造方法,那么编译器会默认为只能使用带参构造方法进行对象的创建,无法使用无参构造方法创建对象。因此,如果需要使用无参构造方法,需要在类里面手动添加一个。相比之下,无参构造方法则是没有参数的构造方法。在Java中,默认情况下,JVM会为每个类提供一个无参构造方法。
Java中的get方法是一种命名规范,用于获取私有成员变量的值。通常情况下,为了保证代码的封装性和安全性,Java类中的数据成员(即变量)都应该使用private关键字修饰,这样可以避免外部程序对其进行修改或访问。如果希望获取或修改这些私有成员变量的值,需要在类中提供公有的set和get方法。
get方法的作用就是获取与该方法同名的成员变量的值,并将其返回给调用方。按照Java命名规范,get方法的名称应该以“get”开头,后面跟着该成员变量的名称,首字母大写。
例如,如果一个类中存在一个私有成员变量“name”,那么对应的get方法应该命名为“getName()”。
Java中的set方法是一种命名规范,用于设置私有成员变量的值。与get方法一样,set方法也是为了保证代码的封装性和安全性,因为它可以控制外部程序对该成员变量的访问和修改。
set方法的作用就是设置与该方法同名的成员变量的值。按照Java命名规范,set方法的名称应该以“set”开头,后面跟着该成员变量的名称,首字母大写。
例如,如果一个类中存在一个私有成员变量“name”,那么对应的set方法应该命名为“setName()”。
set方法通常会接受一个参数,即该成员变量的新值,并将其赋值给该成员变量。有些情况下,set方法可能会对传入的参数进行一些验证或处理,以确保该参数符合要求。
在Java中,方法的重载是指一个类中可以定义有相同的名字,但参数不同的多个方法。多个方法之间通过方法名、参数列表的不同来区分。Java允许在同一个类中定义多个同名函数,只要它们的参数声明(包括形参的个数、类型和顺序)不同即可。
优势:
可以根据传入的参数不同,调用不同的方法,从而提高代码的复用性和灵活性。
与普通方法一样,构造方法也可以被重载,从而使得对象的创建更加灵活和方便。
应用:
方法重载的应用场景非常广泛,在Java主流框架和类库中均有应用。例如,JUnit测试框架就需要通过方法重载实现不同类型的测试用例;Java IO类库中的InputStream类和OutputStream类,都通过方法重载实现了各种读写数据的方式。
举例:
public class Calculator
{
// 重载的方法
public int add(int a, int b)
{
return a + b;
}
public double add(double a, double b)
{
return a + b;
}
public int add(int a, int b, int c)
{
return a + b + c;
}
}
在上面的代码中,我们定义了一个Calculator类,里面包含了三个add()方法,它们的参数列表分别为两个int型、两个double型、和三个int型参数。这三个方法的方法名相同,但是它们的参数列表不同,因此它们都是方法重载。
需要调用不同方法时:
Calculator calculator = new Calculator();//创建对象
int sum1 = calculator.add(2, 3);
double sum2 = calculator.add(2.0, 3.0);
No.16 如有帮助,请支持作者喔!感谢!