虚方法 覆写

using System; using System.Collections.Generic; using System.Linq; using System.Text; using graphlei;

namespace graphlei {     /// <summary>     /// 图形类     /// </summary>     public class graph     {         protected string Color;         public graph()         {         }         public graph(string color)         {             this.Color = color;         }         public string GetColor()         {             return Color;         }         public virtual double Getgraph()         {             return 0.0;         }     }     /// <summary>     /// 圆类     /// </summary>     class round : graph     {         double Nameone;         public round()         {         }         public round(string color, double nameone)         {             this.Color = color;             this.Nameone = nameone;         }         /// <summary>         /// 面积         /// </summary>         /// <returns></returns>         public override double Getgraph()         {             return System.Math.PI * Nameone * Nameone;         }     }     /// <summary>     /// 矩形类     /// </summary>     ///     class rectangle : graph     {         protected double Lenght, Width;         public rectangle()         {         }         public rectangle(string color, double Lenght, double Width)         {             this.Color = color;             this.Lenght = Lenght;             this.Width = Width;         }         /// <summary>         /// 面积         /// </summary>         /// <returns></returns>         public override double Getgraph()         {             return Lenght * Width;         }         /// <summary>         /// 周长         /// </summary>         /// <returns></returns>         public double Getrectangle()         {             return (2 * (Lenght + Width));         }     }

/// <summary>     /// 正方形类     /// </summary>     ///     class square : rectangle     {         protected double side;         public square()         {         }         public square(string Color, double side)         {             this.Color = Color;             this.side = side;         }         public override double Getgraph()         {             return side * side;         }         public double Getsquare()         {             return 2 * (side + side);         }     }    }     class Program     {         static void Main(string[] args)         {             round Myround = new round("红色", 2);             Console.WriteLine("圆颜色 {0},圆的面积 {1}", Myround.GetColor(), Myround.Getgraph());             Console.ReadKey();             rectangle Myrectangle = new rectangle("红色", 1, 2);             Console.WriteLine("矩形颜色 {0},矩形面积{1},矩形的周长{2}",             Myrectangle.GetColor(), Myrectangle.Getgraph(), Myrectangle.Getrectangle());             Console.ReadKey();             square Mysquare = new square("红色", 5);             Console.WriteLine("正方形的颜色{0},正方形的面积{1},正方形的周长{2}",Mysquare.GetColor(),             Mysquare.Getgraph(), Mysquare.Getsquare());             Console.ReadKey();         }

}

虚方法 覆写

时间: 2024-12-19 19:03:28

虚方法 覆写的相关文章

Java基础学习笔记【02】方法覆写、快捷键、super、this、单例模式、适配器

访问类型默认default就是默认没写访问权限,就是包下的访问权限(类内部.同一个包) 除了private访问权限本类,其他的访问权限都包括包 继承:[A继承B] 1 类名A extends 类名B 类的方法[覆写]: 方法要素 描述 方法名 子类父类的覆写方法名一致 返回值 小于父类的返回 参数 小于父类的参数类型 访问类型 大于父类的访问类型 覆写: 1 public void Fun(object obj){  } 1 2 @override public void Fun(string

11.JAVA-Object类之finalize(),clone(),toString()等方法覆写

1.Object介绍 Object类是一个特殊的类,是所有类(包括数组,接口 )的父类,如果一个类没有用extends明确指出继承于某个类,那么它默认继承Object类,所以可以通过向上转型的方法使用类型为Object的变量指向任意类型的对象. 本章主要实现覆写Object类的clone(),toString()equals(),finalize()等最重要的方法. 2.覆写finalize() 在之前我们学习析构方法时,便讲过finalize(). 参考之前学的finallize方法示例:3.

【JAVA】java方法覆写规则

A.重写规则之一: 重写方法不能比被重写方法限制有更严格的访问级别. (但是可以更广泛,比如父类方法是包访问权限,子类的重写方法是public访问权限.) 比如:Object类有个toString()方法,开始重写这个方法的时候我们总容易忘记public修饰符,编译器当然不会放过任何教训我们 的机会.出错的原因就是:没有加任何访问修饰符的方法具有包访问权限,包访问权限比public当然要严格了,所以编译器会报错的. B.重写规则之二: 参数列表必须与被重写方法的相同. 重写有个孪生的弟弟叫重载,

方法的覆写

方法的覆写 类和父类有相同的方法,那么类中方法的访问权限不能比父类中对应方法的访问权限严格,这就叫方法的覆写,一般称之为类覆写了父类中的某个方法 覆写方法的作用:对于一个类,向上转换后(把类的实例化对象赋值给类的父类的对象),通过该父类的对象直接访问该父类的对象的本类部分中被类所覆写的方法时,将自动访问跳转到类中对应的覆写的方法 static方法的覆写不起覆写作用,原因现阶段只能解释为Java就是这样设计的 package test1; public class Test1 { public s

Java中的overload(方法的覆写)

方法覆写(overload)与方法的重载非常相似,它在 Java的继承中也有很重要的应用. 写程序可能会碰到下面的情况,在父类中已经实现的方法可能不够精确,不能满足子类 的需求.例如在前面的 Animal类中,breath方法就过于简单,对于鱼类动物是用腮呼吸的, 而对于哺乳动物则是用肺呼吸的,如何实现呢,Java提供的方法覆写就是解决这方面的问题. 在下面的程序中首先定义了一个父类 Animal,然后定义 Animal的  3个子类  Tiger.Fish 和 Dog,在父类中提供了 3个方法

JAVA中继承时方法的重载(overload)与重写/覆写(override)

JAVA继承时方法的重载(overload)与重写/覆写(override) 重载-Override 函数的方法参数个数或类型不一致,称为方法的重载. 从含义上说,只要求参数的个数或参数的类型不一致就说两个函数是重载函数,而至于返回值是否一样,没关系.同时,重载可以发生在同一个类中也可以发生在继承关系中. class A { } class B extends A { public void fun(String data1) { System.out.println(data1); } pub

Java中方法的覆写

所谓方法的覆写override就是子类定义了与父类中同名的方法,但是在方法覆写时必须考虑权限,即被子类覆写的方法不能拥有比父类方法更加严格的访问权限. 修饰符分别为public.protected.default.private.他们的访问权限如下图所示. 用public修饰的类在本类.同包.子类.其他包中互相访问都是可以的. 用protected修饰的类在本类.同包.子类中互相访问都是可以的,protected不可以在包外没有继承关系的类中互相访问. 就说明用default修饰的类在本类.同包

Java 覆写初探

Java 覆写 继承性的主要特征是子类可以根据父类已有的功能进行功能扩展,但是在子类定义属性或方法的时候有可能定义属性和方法和父类同名,在此类情况下就称为:“覆写”. 方法的覆写:[改良原本功能不足的方法] 子类定义的方法与父类方法名称相同.参数的类型及个数.返回值相同的方法. class A { public void fun() { System.out.println("A.fun()方法") ; } } class B extends A { public void fun()

虚方法和覆写方法

using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace nange_1 { class A { public void f() { Console.WriteLine("在基类中"); } } class B : A { public void f() { Console.WriteLine("在子类中"); } } class P