提问:抽象类不是不能有实例么?为什么WebRequest.Create()方法可以创建抽象类的实例对象呢?WebRequest和 WebResponse 都是抽象类using System;
using System.Net;
using System.IO;
using System.Text;class UWebRequest
{
static void Main()
{
try
{
Console.WriteLine("请输入网址:");
string myAddress = Console.ReadLine(); WebRequest myWebRequest = WebRequest.Create(myAddress);//返回了抽象类的对象
WebResponse myWebResponse = myWebRequest.GetResponse();//返回了抽象类的对象 Stream myStream = myWebResponse.GetResponseStream();
byte[] mybyte = new byte[1024];
string pagecontent = "";
int readl = 0;
do
{
readl = myStream.Read(mybyte, 0, 1024);
pagecontent += Encoding.UTF8.GetString(mybyte, 0, 1024);
} while (readl > 0); Console.WriteLine();
Console.WriteLine(" 以下为所获取的网页内容:");
Console.WriteLine(pagecontent);
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
Console.ReadLine();
}
}
using System.Net;
using System.IO;
using System.Text;class UWebRequest
{
static void Main()
{
try
{
Console.WriteLine("请输入网址:");
string myAddress = Console.ReadLine(); WebRequest myWebRequest = WebRequest.Create(myAddress);//返回了抽象类的对象
WebResponse myWebResponse = myWebRequest.GetResponse();//返回了抽象类的对象 Stream myStream = myWebResponse.GetResponseStream();
byte[] mybyte = new byte[1024];
string pagecontent = "";
int readl = 0;
do
{
readl = myStream.Read(mybyte, 0, 1024);
pagecontent += Encoding.UTF8.GetString(mybyte, 0, 1024);
} while (readl > 0); Console.WriteLine();
Console.WriteLine(" 以下为所获取的网页内容:");
Console.WriteLine(pagecontent);
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
Console.ReadLine();
}
}
不是 new WebRequest 咬你怎么知道Create 内部创建的是抽象类
类似Image.FromFile
public Image FromFile(string fileName)
{
return new Bitmap(fileName);
}
WebResponse myWebResponse = myWebRequest.GetResponse();//返回了抽象类的对象 是返回了抽象类的子类,子类是可以当作父类的。