概述
构造方法
跟类名相同的方法名被称作构造方法,其作用是用于当一个类被new成对象时,对象需要声明的一些变量的构造声明。
构造方法的特点:
(1)构造方法的名字必须与定义他的类名完全相同(甚至连void也没有),且没有返回类型;
(2)构造方法的调用是在创建一个对象时使用new操作进行的。构造方法的作用是初始化对象。举例如下:
Person p = new Person(); //person()调用的就是Person的构造方法
(3)每个类可以有零个或多个构造方法;
(4)不能被static、final、synchronized、abstract和native修饰。且构造方法不能被子类继承。
(5)构造方法在创建对象时自动执行,一般不能显式地直接调用。
类方法
构造方法一般分为两类(无参的构造方法和有参的构造方法)
/*
* 无参构造方法
*/
class Banana{
public Banana() {
System.out.println("无参的构造方法被调用,这里是香蕉");
}
}
public class text3 {
public static void main(String[] args) {
Banana s = new Banana();
}
}
从代码和结果可以看出,“new Banana()”除了实例化对象,还调用了构造方法Banana();
/*
* 有参构造方法
*/
class Apple{
int size;
public Apple(int a) {
System.out.println("有参的构造方法被调用,这里是苹果");
size = a;
}
public void shuchu() {
System.out.println("这个苹果有" + size + "这么大");
}
}
public class text3 {
public static void main(String[] args) {
Apple s = new Apple(18);
s.shuchu();
}
}
从代码和结果可以看到“Apple(int a)”这是一个有参的构造方法,在“new Apple(18)”实例化对象的同时把参数传给a赋值给size并调用了shuchu()这个构造方法。
构造方法的重载
构造方法也可以重载,在一个中只要构造方法的参数类型或参数个数不同即可。用不同的构造方法可以给不同的属性赋值。
/*
* 构造方法的重载
*/
class Food{
String name;
int size;
public Food(String b , int a) {
name = b;
size = a;
}
public Food(String b) {
name = b;
}
public Food(int a) {
size = a;
}
public void shuchu() {
System.out.println("这个" + name +"有" + size + "这么大");
}
}
public class text4 {
public static void main(String[] args) {
Food s = new Food("苹果");
Food x = new Food("草莓",18);
Food z = new Food(20);
s.shuchu();
x.shuchu();
z.shuchu();
}
}
根据代码看出People类中定义了三个构造方法,它们构成了重载。
类方法(静态方法,用static修饰的方法)
类方法是属于整个类的,所以类方法的方法体中不能有与类的对象有关的内容。
即类方法体有如下限制:
1.类方法中不能引用对象变量;
2.类方法中不能调用类的对象方法;
3.类方法不能被覆盖(重写);
4.在类方法中不能调使用super,this关键字;
实例方法
当一个类创建了一个对象后,这个对象就可以调用该类的方法(对象方法)。
1.实例方法中可以引用对象变量;
2.实例方法中可以引用类变量;
3.实例方法中可以调用类方法;
4.对象方法中可以使用super,this关键字;
类方法与实例方法的区别
类方法在加载类时就被分配了内存地址,因此加载后即可被任意对象调用,并且可以通过类名直接调用(类名.方法名),而实例方法需要在创建对象后才会被分配内存地址,所以实例方法不能通过类名调用。
注意:
当我们创建第一个对象时,类中的实例方法就分配了入口地址,当再创建对象时,不再分配入口地址。 也就是说,方法的入口地址被所有的对象共享,当所有的对象都不存在时,方法的入口地址才被取消。
在Java语言中,类中的类方法不可以操作实例变量,也不可以调用实例方法, 这是因为在类创建对象之前,实例成员变量还没有分配内存,而且实例方法也没有入口地址。
最后
以上就是怡然薯片为你收集整理的JAVA构造方法(与类名相同的方法),类方法与实例方法的全部内容,希望文章能够帮你解决JAVA构造方法(与类名相同的方法),类方法与实例方法所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复