继承小试牛刀:虚方法virtual

#include<iostream>
using namespace std;
class Point
{
public:
    Point(double a=0,double b=0):xx(a),yy(b){}
   virtual double x(){return xx;}
   virtual double y(){return yy;}
private:
    double xx,yy;
};
class t_Point :public Point
{
public:
    t_Point(double a=0,double b=0,double c=0):Point(a,b),zz(c){}
    double z(){return zz;}
private:
    double zz;
};

//:public
int main()
{
    Point a(8,8);
    t_Point b(2,1,8);
    cout<<a.x()<<a.y()<<endl<<b.x()<<b.y()<<endl;
    cout<<b.z();
    return 0;
}

时间: 2024-10-07 06:44:34

继承小试牛刀:虚方法virtual的相关文章

虚方法virtual详解

虚方法virtual详解 从C#的程序编译的角度来看,它和其它一般的函数有什么区别呢?一般函数在编译时就静态地编译到了执行文件中,其相对地址在程序运行期间是不发生变化的,也就是写死了的!而虚函数在编译期间是不被静态编译的,它的相对地址是不确定的,它会根据运行时期对象实例来动态判断要调用的函数,其中那个申明时定义的类叫申明类,那个执行时实例化的类叫实例类. 如:飞禽 bird = new 麻雀();那么飞禽就是申明类,麻雀是实例类. 具体的检查的流程如下 1.当调用一个对象的函数时,系统会直接去检

虚方法virtual、抽象方法abstract、接口interface区别

接口.抽象类.抽象方法.虚方法: 这四个名词时非常容易混淆的: 首先说一下接口 与抽象类 的异同: 相同点: 1.他们都不能实例化自己,也就是说都是用来被继承的. 2.抽象类中的抽象方法和接口方法一样,都不能有方法体 不同点: 1.抽象类里可以有字段,接口中不能有字段. 2.抽象类中的普通方法可以有方法体,而接口方法没有方法体. 3.接口中的方法不能有访问修饰符,抽象类中的抽象方法被继承,需要override重写 . 4.接口更像是一种规范,一种约束. 5.一个子类只能继承一个抽象类,但却可以继

【jq】c#零基础学习之路(3)继承和虚方法

c#只能继承一个基类和多个接口(0+) 父类:Human: class Human { public virtual Move() { Console.WriteLine("Human的虚方法"); } public viod Play() { Console.WriteLine("Human的Play方法"); } } 子类:Chinese: class Chinese:Human { public override void Move() { Console.W

虚方法(virtual)和抽象方法(abstract)的区别

虚方法和抽象方法都可以供派生类重写. 虚方法必须有实现部分,抽象方法必须没有实现部分,抽象方法是一种强制派生类覆盖的方法,否则派生类将不能被实例化.如: class Program { static void Main(string[] args) { C c = new C(); D d = new D(); } } abstract class A { public virtual void Sleep() { } public virtual void N(); //报错,虚方法必须有实现

[转]虚方法(virtual)和抽象方法(abstract)的区别

虚方法和抽象方法都可以供派生类重写,它们之间有什么区别呢? 1. 虚方法必须有实现部分,抽象方法没有提供实现部分,抽象方法是一种强制派生类覆盖的方法,否则派生类将不能被实例化.如: //抽象方法public abstract class Animal{    public abstract void Sleep();    public abstract void Eat();} //虚方法public class Animal{    public virtual void Sleep(){}

总结下抽象类Abstract和虚方法Virtual(易混点)

1.普通类中可以有普通方法和虚方法,在被继承时,虚方法可以选择重写(override)或者不重写 2.抽象类中可以有普通方法和虚方法和抽象方法,当被继承时 如下 1.普通方法不能被子类重写 2.虚方法可以选择被子类重写(override)也可以不被重写 3.抽象方法必须被子类重写(override) 原文地址:https://www.cnblogs.com/lixipeng/p/11173377.html

【转】C#虚方法virtual详解

转:https://www.cnblogs.com/zhaoshujie/p/10502404.html 在C++.Java等众多OOP语言里都可以看到virtual的身影,而C#作为一个完全面向对象的语言当然也不例外. 虚拟函数从C#的程序编译的角度来看,它和其它一般的函数有什么区别呢?一般函数在编译时就静态地编译到了执行文件中,其相对地址在程序运行期间是不发生变化的,也就是写死了的!而虚函数在编译期间是不被静态编译的,它的相对地址是不确定的,它会根据运行时期对象实例来动态判断要调用的函数,其

多态,虚方法重写,抽象类,接口

简而言之就是龙生九子,各有不同 有了继承,才有了多态 1.虚方法 virtual重写 override 父类中的方法,在子类中并不适用,那么子类需要自主更改继承的方法或者是属性,那父类中加了virtual关键字的方法才可以被子类重写 子类重写父类的方法使用的是override关键字 using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace 多态 { public

虚方法与重写方法的使用

C#中的多态性在实现时主要是通过在子类(派生类)中重写基类的虚方法或函数成员来实现的,那么这里就遇到两个概念,一个是虚方法,另一个是重写方法,而这两个方法也是多态中最重要的两个概念,下面分别对它们进行讲解. 1.虚方法 虚方法就是允许被其子类重新定义的方法,在声明时,需要使用virtual修饰符. 注意: (1)virtual修饰符不能与static.abstract或者override修饰符同时使用: (2)由于虚方法不能是私有的,所以,virtual修饰符不能与private修饰符同时使用.