override 重写的方法
可以把子类构造的对象赋值给fu'lei
override 重写的方法
可以把子类构造的对象赋值给fu'lei
1a
2b
3b
4c
5
6c
1.抽象类可以包含方法体,接口不能包含方法体,所以接口就不能包含普通带有函数体的函数了
2.抽象类是一个不完整的模板,他只能通过继承来实现构造对象,所以抽象类通常被称为抽象基类
3.接口也是一个不完整的模板,同样也不能够完成实例化(构造对象),
抽象类和接口的区别:抽象类可以用普通函数
new方法和override方法都相当于把父类的函数在子类重写一遍,只要是子类构造的,在调用函数的时候都会调用子类重写后的。new隐藏方法如果是用子类构造,父类声明的就会调用父类的方法(哪个声明的就用那个的方法new son()是构造father b=new son()是声明),virtual必须和override一起使用,但new可以单独使用
用子类构造的数据可以传给父类,在调用函数时会调用子类的例如a.Fun2(b),主要是看参数,也即是b是子类还是父类的,当参数是整数或者不是子类或者父类的,就看是谁调用的,也就是这里的a,如果是a调用的就执行父类的函数,如果是b调用的就执行b类重回后的函数
new 关键字申明的方法属于隐藏方法, 父类申明的对象调用方法 则调用父类的, 子类申明的对象则调用子类的。
override重写方法, 方法被重写后都只会调用子类的方法。
25
16
练习8
a.Fun2(b); // b.Fun1(1); 2 Fun1(5); 5
b.Fun2(a); // a.Fun1(1); 1
Fun1(5); 5+1=6
//用子类构造的,所以调用的是子类里的Fun1
1,接口没有返回值,。
2,接口与抽象类的区别
接口:只能包含抽象方法(只有方法的声明,没有方法体)
抽象类:可以包含抽象方法,也可以包含普通方法
3,
接口里不能定义变量
不能包含函数体,void disFile(){}里{}也算函数体
隐藏方法 子类声明对象用子类中方法
父类声明就用父类中,没有new只会警告
base 只能访问父类中的数据
5.A
6.B C
7.B
8.2 5;1 6
9.c 10.c 11.a 12.c 13.c
14.b 15.b 16.b 17.c 18.b
19.b 20.d 21.a 22.c 23.a