面向对象中构造函数的小练习

            //写一个Ticket类,有一个距离属性(本属性只读,在构造方法中赋值),不能为负数
           //有一个价格属性,价格属性为只读,并且根据距离distance计算价格Price(1元/公里)
           //0--100公里   票价不打折
           //101-200公里  票价总额9.5折
           //201-300公里  票价总额9折
           //301公里以上  票价总额8折
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 面向对象构造函数
{
       public class Ticket
    {      //写一个Ticket类,有一个距离属性(本属性只读,在构造方法中赋值),不能为负数
           //有一个价格属性,价格属性为只读,并且根据距离distance计算价格Price(1元/公里)
           //0--100公里   票价不打折
           //101-200公里  票价总额9.5折
           //201-300公里  票价总额9折
           //301公里以上  票价总额8折
           private double _distance;
           public double Distance
           {
               get { return _distance; }//只读属性意味着只有get 没有set
           }
           public Ticket(double distance)
           {
               if (distance < 0)
               {
                   distance = 0;
               }
               this._distance = distance;
           }
           private double _price;

           public double Price
           {
               get
               {
                   if (_distance > 0 && _distance <= 100)
                   {
                       return _distance * 1.0;
                   }
                   else if (_distance > 101 && _distance < 200)
                   {
                       return _distance * 0.95;
                   }
                   else if (_distance > 201 && _distance < 300)
                   {
                       return _distance * 0.9;
                   }
                   else
                   {
                       return _distance * 0.8;
                   }
               }
           }
           public void ShowTicket()
           {
               Console.WriteLine("{0}公里需要{1}元",this.Distance,Price);

           }

    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 面向对象构造函数
{
    class Program
    {
        static void Main(string[] args)
        {
            Ticket t = new Ticket(400);
            t.ShowTicket();
            Console.ReadLine();
        }
    }
}
时间: 2024-12-13 11:48:10

面向对象中构造函数的小练习的相关文章

面向对象中构造函数,原型对象和实例的关系图

总结 以下代码为例 function Person(){} Person.prototype.c=function(){} var p1=new Person(); var p2=new Person(); 1.构造函数有一个prototype属性,(任何函数都有这个属性)这个属性表示原型对象 Person.prototype 2.构造函数的原型对象有个consturctor属性,指向构造函数本身 Person.prototype.constructor===Person 3.构造函数的原型对象

文成小盆友python-num8 面向对象中的成员,成员修饰符,特殊成员,异常处理,设计模式之单例模式

本节主要内容: 1.面向对象中的成员 2.成员修饰符 3.特殊成员 4.异常处理 5.设计模式之单例模式 一.面向对象中的成员(类的成员) 类的成员总共可以分为3大类,每类中有不同的分支. 1.总述,基本分类 如下图所示: 类成员包括字段,方法,和属性 2.字段 如上图字段分为普通字段和静态字段,两者的使用有区别,但是最大的区别在于两者在内存中的保存位置有区别. 普通字段属于对象而静态字段属于类,在使用过程中谁的字段就由谁来调用. 静态字段和普通字段的定义如下: 在调用时分各自调用 #####类

javascript 面向对象写法的简单小例子,方面以后参考

面向对象写法的简单小例子,也即是一个小模板,方便以后拿来参考,如果有误,请各位大神多多指点.思想:主要给#box添加颜色和添加内容,一个方法是添加颜色,另一个方法是添加内容,然后编写的面向对象写法. <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title></title> </head> <st

对php面向对象中魔术方法的认识

<?php//header(charset="utf8");    //echo 'hey 这里是描述我对php 面向对象中各种魔术方法的认识.';/* *魔术方法是在一些特定情况下会自动调用的一些php系统自定义函数 *这些函数都很有个性,他们统一以__两个 _ (下划线)开头. * 下面对于php 中这些常用的魔术方法一些个人认识. **/class demo {    public $name;    public $age; //当实例化这个类,首先会自动调用的方法 __

js中构造函数的相关知识点

首先大家需要先明白几个概念,我也是踩过几个坑才发现构造函数并不是我们所想的那么简单的, 公有属性:就是构造函数的时候this所指向的那个属性,这是为了让所有实现这个构造函数的实例都能有的属性: 公有方法:同上. 私有属性:就是构造函数中通过var xx:所声明的那个属性,为何叫私有呢,因为他是在构造函数所在的作用域内声明的,因此叫做私有: 私有方法:同上私有属性的理解: 静态属性和静态方法(其实我是感觉很奇葩的):通过调用  构造函数名.xxx 实现的属性和方法,这个方法区别于私有属性和方法的最

C++ Primer 学习笔记_68_面向对象编程 --构造函数和复制控制[续]

面向对象编程 --构造函数和复制控制[续] 三.复制控制和继承 合成操作对对象的基类部分连同派生类部分的成员一起进行复制.赋值或撤销,使用基类的复制构造函数.赋值操作符或析构函数对基类部分进行复制.赋值或撤销. 类是否需要定义复制控制成员完全取决于类自身的直接成员.基类可以定义自己的复制控制而派生类使用合成版本,反之,基类使用合成版本,而派生类使用自己定义的复制控制也可以. 只包含类类型或内置类型的数据成员.不包含指针的类一般可以使用合成操作,复制.赋值或撤销这样的成员不需要使用特殊控制.但是:

面向对象中的原型和原型链

今天我们要说的是面向对象中的原型链,在说原型链之前,我们先一步一步来了解一下面向对象中的一些基本概念. 一.类 类是指具有相同特征(属性)和行为(方法)的事物的集合. 二.对象 对象的目的实际上是将具有相同属性和行为的代码整合在一起,方便我们的管理. 起初,我们是这样来创建一个对象的, js代码: var person1 = { name:"张三", age:18, height:165, walk:function(){ console.log("i can walk!&q

C++ Primer 学习笔记_68_面向对象编程 -构造函数跟复制控制[续]

面向对象编程 --构造函数和复制控制[续] 三.复制控制和继承 合成操作对对象的基类部分连同派生类部分的成员一起进行复制.赋值或撤销,使用基类的复制构造函数.赋值操作符或析构函数对基类部分进行复制.赋值或撤销. 类是否需要定义复制控制成员完全取决于类自身的直接成员.基类可以定义自己的复制控制而派生类使用合成版本,反之,基类使用合成版本,而派生类使用自己定义的复制控制也可以. 只包含类类型或内置类型的数据成员.不包含指针的类一般可以使用合成操作,复制.赋值或撤销这样的成员不需要使用特殊控制.但是:

JAVAABC-java中的常见小问题

欢迎到我的repo和我共同编辑:https://github.com/archimekai/JavaABC JAVA ABC: java中常见的小问题 注:JDKAPI文档(http://docs.oracle.com/javase/8/docs/api/index.html或从http://cf.pku.cn/tds/java下载chm格式的) JDK的源代码(一般在 C:\Program Files\Java\jdk1.8.0\src.zip)中 -–java.lang.Object类-–