JAVA基础|构造方法的理解

构造方法的定义

构造方法与普通方法不同之处在于:它在类中生成,所以专用于在构造对象时,初始化对象成员的,其名称与所属类名相同

构造方法的实现

构造方法在类中实现,所以先有一个类

class 类名
	{
    
    
	访问权限 类名(参数1,参数2...参数n)
	{
    
    
		构造方法体
	}
}

特点:访问权限分为 public private protect 三类
构造方法体名和类名一致
没有返回类型 这是与普通方法最大不同之处因为,构造函数用来初始化对象成员,而对象成员类型可以有很多,所以构造函数无需返回类型

下面几个特点还没有遇到 后面再加强
构造方法可以被重载使用
构造方法不能被static 和 final 修饰
构造方法不能被继承,子类使用父类的构造方法需要使用关键字super

一个大特点
构造方法在创建对象时,就会自动“隐式”执行,所***以构造方法无需在程序中直接调用,而是在对象产生时,自动执行一次***

刚刚开始写的时候 带了 切记与函数一样 这里不用带; 这就是带了 ;结尾构造方法的结果
在这里插入图片描述

public class ConstructTest01
{
    
    
	public static void main(String[] args)
	{
    
    
		Person P=new Person(12);
		P.show("被调用!");
	}
}
//在此类中构造一个方法:
class Person
{
    
    
		
	public Person(int x)//
	{
    
    
		a=x;
		System.out.println("构造方法被调用");
		System.out.println("a="+a);
	}

	public void show(String str)
	{
    
    
		System.out.println("str="+str);
	}
	private int a;
}

再来一个 看看


class Book1
{
    
    
	String title;
	double price;
	static String pub="出版社";
	void print()
	{
    
    
		System.out.println("书名:"+title);
		System.out.println("价格:"+price);
		System.out.println("出版社:"+pub);
	}
	public Book1(String t,double pr,String pu)
	{
    
    
		title=t;
		price=pr;
		pub=pu;
		System.out.println("被调用");
	}
}

public class Book
{
    
    
	public static void main(String[] args)
	{
    
    
		
		Book1 B=new Book1("图书馆",87,"酒楼");
		System.out.println("fenge");
		B.print();
	}
}

构造方法私有化

例子
在PrivateDemo 类中 定义了一个私有化的构造方法

public class PrivateDemo
{
    
    
	private PrivateDemo()
	{
    
    
	}
}

如果在另外一个类中想实例化上面这个类的构造方法
将会执行错误,因为该私有化的构造方法 是不能在其他类中可见

public class PrivateCallDemo
{
    
    
	public static void main(String[] args)
		{
    
    
			PrivateDemo Demo=new PrivateDemo();//私有化的构造方法不能在一个新类中调用。
		}
}

私有化的构造方法,只能在本类中,被调用

例子2

public class PrivateDemo
{
    
    
	String name;
	private PrivateDemo()//私有化的构造方法
	{
    
    
		name="GGGG";
		System.out.println("name: "+name);
	}

	//在同一个类中,调用上面这个私有化的构造方法
	public void main(String[] args)
	{
    
    
		new PrivateDemo();//在本类中可以调用
	}
}

例子3其他类如何间接调用私有化的构造方法

也是通过和私有化同一类的public方法调用

public class PrivateDemo
{
    
    
	String name;
	private PrivateDemo()//私有化的构造方法
	{
    
    
		name="GGGG";
		System.out.println("name: "+name);
	}

	//同类中调用私有化的构造方法
	public static final PrivateDemo PRI=new PrivateDemo();

	//上面在同类中调用了私有化的构造方法,
	//下一步再创建一个普通方法来调用该对象PRI即可
	public static PrivateDemo GetPri()
	{
    
    
		return PRI;
	}
}

在其他类中调用上面这个类的普通方法,间接实现调用私有化的构造方法

public class TestPrivate
{
    
    
	public static void main(String[] args)
	{
    
    
		PrivateDemo P=PrivateDemo.GetPri();
	}
}

在这里插入图片描述
实现了 B类通过A类中的普通方法2的调用私有化构造方法1 使得了B类间接的调用了A类中的私有化构造方法。

猜你喜欢

转载自blog.csdn.net/weixin_46096297/article/details/114446931