黑马程序员技术交流社区
标题:
有的类不可以创建对象?
[打印本页]
作者:
江远云
时间:
2012-3-16 20:10
标题:
有的类不可以创建对象?
import java.net.*;
class ff
{
public static void main(String[] args)
{
InetAddress i = new InetAddress();
System.out.println(i.getLocalHost());
}
}
提示:InetAddress()在java.net.InetAddress中不是公共的;无法从外部软件包中对其访问,自己想的话静态方法可以用类名调用,再用类类型变量接收,那InetAddress i = new InetAddress();这句话出了什么问题?
作者:
lucky_xingxing
时间:
2012-3-16 21:16
这是典型单例模式的应用,把该类的构造方法设置成 私有的了,然后用了一个静态的共有方法返回该对象的实例
作者:
李深山
时间:
2012-3-16 21:39
InetAddress,没有构造方法,只能通过直接调用静态方法例如:InetAddress. getByAddress(byte[] addr)来创建实例。
public static InetAddress getByAddress(byte[] addr)
throws UnknownHostException在给定原始 IP 地址的情况下,返回 InetAddress 对象。参数按网络字节顺序:地址的高位字节位于 getAddress()[0] 中。
此方法不会阻塞,即不执行任何反向名称服务查找操作。
IPv4 地址 byte 数组的长度必须为 4 个字节,IPv6 byte 数组的长度必须为 16 个字节
参数:
addr - 网络字节顺序的原始 IP 地址
引用楼上的话:这是典型单例模式的应用,把该类的构造方法设置成 私有的了,然后用了一个静态的共有方法返回该对象的实例
作者:
李深山
时间:
2012-3-16 21:39
InetAddress,没有构造方法,只能通过直接调用静态方法例如:InetAddress. getByAddress(byte[] addr)来创建实例。
public static InetAddress getByAddress(byte[] addr)
throws UnknownHostException在给定原始 IP 地址的情况下,返回 InetAddress 对象。参数按网络字节顺序:地址的高位字节位于 getAddress()[0] 中。
此方法不会阻塞,即不执行任何反向名称服务查找操作。
IPv4 地址 byte 数组的长度必须为 4 个字节,IPv6 byte 数组的长度必须为 16 个字节
参数:
addr - 网络字节顺序的原始 IP 地址
引用楼上的话:这是典型单例模式的应用,把该类的构造方法设置成 私有的了,然后用了一个静态的共有方法返回该对象的实例
作者:
江远云
时间:
2012-3-16 21:51
谢谢两位,是没有构造方法就不可new,(){}
作者:
胡元
时间:
2012-3-16 22:39
没有没有构造方法的类,只是构造方法被私有化了,构造方法被私有化,在类以外建立对象就不能初始化,当然就不能建立对象!
作者:
江远云
时间:
2012-3-18 13:30
谢谢上面,构造方法被私有化了已经被封装在里面了,用对象的时候只能这样了
作者:
李飞
时间:
2012-3-18 15:17
单例设计模式
当构造函数时私有的时候,就不能new,这个时候就有两种情况了
1. 如果该类的所有方法都是静态的话,就可以不用对外提供得到该类对象的方法
2. 如果该类可以供外部使用的类有非静态方法的时候,就必须对外提供一个获取该类对象的方法,通常这个方法就是getInstance
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2