多态的理解
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
// 用基类实例化
namespace ConsoleApplication21
{
class Program
{
public abstract class A
{
public virtual void C()
{
Console.WriteLine("A IS");
}
public virtual void Fun()
{
Console.WriteLine("A.Fun()");
}
}
public class B : A
{
public override void C()
{
Console.WriteLine("B IS ");
}
public B()
{
Console.WriteLine('B');
}
public new void Fun()
{
Console.WriteLine("B.Fun()");
}
public void hello()
{
Console.WriteLine("hello");
}
}
public class D : A
{
public override void C()
{
Console.WriteLine("D IS ");
}
public D()
{
Console.WriteLine('D');
}
public override void Fun()
{
Console.WriteLine("D.Fun()");
}
public void hello()
{
Console.WriteLine("hello");
}
}
public static void Main()
{
A a = new D();
a.C();
a.Fun();
Console.ReadKey();
A a1 = new B();
a1.C();
a1.Fun();
Console.ReadKey();
B b = new B();
b.C();
b.Fun();
b.hello()
}
}
}
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication1
{
class Class1
{
private string str = "Class1.str";
private int i = 0;
static void StringConvert(string str)
{ str = "string being converted."; }
static void StringConvert(Class1 c)
{ c.str = "string being converted."; }
static void Add(int i) { i++; }
static void AddWithRef(ref int i)
{ i++; }
static void Main()
{
int i1 = 10; int i2 = 20;
string str = "str";
Class1 c = new Class1();
Add(i1);
AddWithRef(ref i2);
Add(c.i);
StringConvert(str);
StringConvert(c);
Console.WriteLine(i1);
Console.WriteLine(i2);
Console.WriteLine(c.i);
Console.WriteLine(str);
Console.WriteLine(c.str);
Console.ReadKey();
}
}
}
-----------------
10
21
0
str
string being converted
---------------------------
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication1
{
public abstract class A
{
public A() { Console.WriteLine('A'); } //10
public virtual void Fun() { Console.WriteLine("A.Fun()"); }//17
}
class Program : A
{
public Program()//16
{
Console.WriteLine('B');//18
}
public new void Fun()
{
Console.WriteLine("B.Fun()");
}
static void Main(string[] args)
{
A a = new Program();
// 先16,转10输出A,再17,18输出B,
a.Fun();
// 转17输出11
Console.ReadKey();
}
}
}
-----------------
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication1
{
public class A
{
public virtual void Fun1(int i) //10行
{
Console.WriteLine(i);
}
public void Fun2(A a)
{
a.Fun1(1); //16行
Fun1(5); //17行
}
}
public class B : A
{
public override void Fun1(int i)//22行
{
base.Fun1(i + 1); //24行
}
public static void Main()
{
B b = new B(); // 走下面
A a = new A(); // 继续走下
a.Fun2(b);
// 先走A.F2进入16行 由于a.fun1被重B写了,转22,到24的时候base.fun1此时i=2,转第10行输入2
// 接着走17行 , 自调进入10行 输入5
b.Fun2(a);
// 进16传1 先走10行 输出1
// 进17转22行 返回个5+1 再转10输出6
Console.ReadKey();
}
}
}
结果
2
5
1
6
---------------------------
Question 33. (单选)
int[][] myArray3=new int[3][]{new int[3]{5,6,2},new int[5]{6,9,7,8,3},new int[2]{3,2}}; myArray3[2][2]的值是(4)。
1. 9
2. 2
3. 6
4. 越界
Question 40. (单选)
class Class1
{
public static int Count = 0;
static Class1()
{
Count++;
}
public Class1()
{
Count++;
}
}
Class1 o1 = new Class1();
Class1 o2 = new Class1();
请问,Class1.Count的值是多少?(3 )
1. 1
2. 2
3. 3
4. 4
abstract class BaseClass
{
public virtual void MethodA()
{
Console.WriteLine("BaseClass");
}
public virtual void MethodB()
{
}
}
class Class1: BaseClass
{
public void MethodA()
{
Console.WriteLine("Class1");
}
public override void MethodB()
{
}
}
class Class2: Class1
{
new public void MethodB()
{
}
}
class MainClass
{
public static void Main(string[] args)
{
Class2 o = new Class2();
o.MethodA();
}
}
请问,此程序输出结果是: 3
1. BaseClass
2. BassClass Class1
3. Class1
4. Class1 BassClass
public static void Main(string[] args)
{
int i = 2000;
object o = i;
i = 2001;
int j =(int) o;
Console.WriteLine("i={0},o={1}, j={2}",i,o,j);
}
此程序输出结果是 : 1
1. i=2001,o=2000,j=2000
2. i=2001,o=2001,,j=2001
3. i=2000,o=2001,,j=2000
4. i=2001,o=2000,j=2001
public abstract class A
{
public A()
{
Console.WriteLine('A');
}
public virtual void Fun()
{
Console.WriteLine("A.Fun()");
}
}
public class B: A
{
public B()
{
Console.WriteLine('B');
}
public new void Fun()
{
Console.WriteLine("B.Fun()");
}
public static void Main()
{
A a = new B();
a.Fun();
}
}
此程序输出结果是 : 1
1. A B A.Fun()
2. A B B.Fun()
3. B A A.Fun()
4. B A B.Fun()