animal

面向对象的三大特性: 继承 多态 封装

牧云@^-^@ 提交于 2019-12-01 08:55:21
class Animal: def __init__(self,name,sex,age): self.name = name self.sex = sex self.age = age class Person: def __init__(self,name,sex,age): self.name = name self.sex = sex self.age = age class Cat: def __init__(self,name,sex,age): self.name = name self.sex = sex self.age = age class Dog: def __init__(self,name,sex,age): self.name = name self.sex = sex self.age = age p1 = Person('alex','laddyboy',1000) class Animal: breath = '呼吸' def __init__(self, name, sex, age): self.name = name self.sex = sex self.age = age def eat(self): print(self) print('动物都需要进食....') class Person(Animal): # 括号里面的 父类,基类

Scala Type Parameters 2

无人久伴 提交于 2019-11-30 23:49:04
类型关系 Scala 支持在泛型类上使用型变注释,用来表示复杂类型、组合类型的子类型关系间的相关性 协变 +T ,变化方向相同,通常用在生产 假设 A extends T , 对于 Clazz[+T] ,则 Clazz[A] 也可看做 Clazz[T] // 官网示例 abstract class Animal { def name: String } case class Cat(name: String) extends Animal case class Dog(name: String) extends Animal 由于 Scala 标准库中不可变 List 的定义为 List[+A] ,因此 List[Cat] 是 List[Animal] 的子类型, List[Dog] 也是 List[Animal] 的子类型,所以可直接将他们当作 List[Animal] 使用。 // 官网示例 object CovarianceTest extends App { def printAnimalNames(animals: List[Animal]): Unit = { animals.foreach { animal => println(animal.name) } } val cats: List[Cat] = List(Cat("Whiskers"), Cat("Tom"

java - 基础 - 类的关系

霸气de小男生 提交于 2019-11-30 14:50:17
1.泛化(继承,实现) A is a B A有B的所有属性 2.包含(组合,聚合,关联) A has a B B是A的一部分 3.依赖 A use a B A需要B才能实现 继承: 所有类都默认继承object类 object中的方法: hashcode() 将内存地址计算得到一个整数, public native int hashcode(); native: 调用了底层c++语言的方法 equals() 比较内容是否一致 publice boolean equals(object obj){ return this == obj;} toString() 把类的内容转化为String字符串 getClass() 获取类的映射 wait 线程等待 notify 线程唤醒 notifyAll 全部唤醒 finalize protected 类被垃圾回收器回收时调用 clone protected 克隆类对象 子类可以继承父类的所有属性和方法,父类中的所有public属性和方法都可以直接使用,private的可以继承但是不能修改和直接使用。 子类用 extends + 父类 继承 每一个类只能继承一个类,让类变的更加安全。 子类可以添加自己独特的属性和方法 权限:public,protected,默认不写,private 从大到小 子类的权限必须大于等于父类 方法返回值

移动打车项目1

筅森魡賤 提交于 2019-11-30 06:52:15
// 只能用一个类名 和文件名一致 // 模块export andri //定义一个类 在外界调用 public class HelloJava { // 主方法 public static void main(String args[]) { System.out.printIn("Hello java") } } return shell 开启一个线程 执行a.out return 的返回值 返回给shell calss Dog { Dog(){ this.color = "black" } Dog(String color){ this.color = color } public void sleep(){ System.out.println(this.color + "Dog is sleep"); } private String color; } public class Text2_demo { public static void main(String args[]){ Dog dog1 = new Dog(); Dog dog2 = new Dog("dahuang"); dog1.sleep(); } } 值传递 c/c++ 值传递 开辟新空间 java python 基本类型传递的都是值传递, 复杂类型 引用 byte,long double

Python-31章 isinstance type issubclass

孤人 提交于 2019-11-30 04:52:40
isinstance type issubclass class animal(): def eat(self): print("饿了吃点东西") class cat(animal): def play(self): print("猫喜欢玩") c = cat() print(isinstance(c,cat)) #输出 : True print(isinstance(c,animal)) # 向上判断,输出: True a = animal() print(isinstance(a,cat)) #不能向下判断,输出:False #判断某一个类是不是某一个类的家族体系中的 print(type(a)) #返回a的数据类型,精准告诉你这个对象的数据类型,输出:<class '__main__.animal'> #判断,xx类是否是xx的子类 print(issubclass(cat,animal)) #输出: True print(issubclass(animal,cat)) #输出: False 区分一个方法和函数 在类中,如果是 类名.方法 调用,是一个函数 对象.方法 调用,是一个方法 类方法:都是方法 静态方法:都是函数 def func(): print("我是函数") class roo: def chi(self): #实例方法 print("我是方法") r =

标准循环与列表推导的对比

巧了我就是萌 提交于 2019-11-30 02:09:32
条件语句 这样看起来列表推导式也没什么大不了,但别忘了它还能对元素做进一步操作,例如加个条件语句。在标准的列表循环中,我们的条件语句如下所示会加到 for 循环中。 animal_doctor = []for animal in animal_park:if animal != 'Dog’and animal != ‘Cat’: animal_doctor.append(animal) 在列表推导式中,我们可以将条件加到里面,用稍微长一点的单行代码完成整个流程。上面代码块可以等价地表达为: nimal_doctor = [animal for animal in animal_park if animal != 'Dog’and animal != ‘Cat’] 另外非常重要的一点是,列表推导式的速度非常快。如下两者都加了条件语句,但是列表推导式要比一般的循环语句快了 51%。 最后,如果你使用过列表推导式创建新的列表,那么你最好一直使用它,因为我们没有原因再使用标准 Python 循环。我们可以发现,只要明晰了基本概念,那么列表推导式还是非常容易使用的。 来源: https://blog.csdn.net/wwwds66668com/article/details/100996972

C# 类 (6) -继承

一世执手 提交于 2019-11-29 23:53:06
继承 定义类的时候, public class Dog:Animal 表示 Dog 这个类是 继承自 Animal,冒号后面的是它的基类 继承后 的Dog 类,当调用Dog.Great() 的时候输出的是Animal 里的内容,因为Dog继承自Animal,虽然我们没定义过Dog的Greet方法,它会调用基类的方法 这两个类都会输出, Hello, I'm some sort of animal! 如果想让Dog 输出 Hello, I'm some sort of dog!' 就涉及到 重构,需要用到两个关键字 virtual override 基类里 用 virtual 表示 这个方法可以被重构 派生类 用 override 表示 我重构了这个源自基类的方法 这样两个类就会有不同的输出了 可以被重构,不表示你必须得重构它,你可以使用 base 关键字 获取基类的原生方法,我就想让dog 先输出 animal,然后再输出dog,改不改看你自己的需求    base 表示自己的基类,这里面就是Animal 不仅是方法,其他成员基本上都被继承了,只是要注意,前几节讲过可见性Visibility,继承的类是无法访问基类里 private 性质的成员的,remember? 层层继承,animal - dog - puppy(小狗) 等等,一级一级继承下来,只是在C#里不能有多继承

java中的继承

时间秒杀一切 提交于 2019-11-29 21:30:27
package com.aaa.zxf.ajax.test; /** *一、 java 中的继承 * * 继承的特性? * 1.实现继承的方式 * A 如何建立继承关系(一个类继承于 另一个类 子类 继承 父类 ) * * 【修饰符】 class 类名(子类) extends 类名(父类){ * * } * * B 子类继承父类 就可以使用父类的成员变量和方法(局限性 权限修饰需要满足) * 注意: 面试题 私有的属性和方法能不能被继承? * 答案:不能 因为无法调用 * 能 但是无法调用 * * 2.继承的关系 * 在java中 类和类之间是单继承关系(一个类只能继承一个父类) * * 类 和 类 单继承 * 类 和 接口 多实现 * 接口和 接口 多继承 * * 3.默认的继承 * 如果一个类没有写 extends 默认继承于 Object(鸡肋 基类) * * * 二、 方法的重写 * 子类有一个方法 和 父类一模一样 称之为 子类重写了父类的方法 * * 思考题:为什么要重写? * 因为 有可能父类的方法,满足不了子类的需求 所以子类需要对父类的方法进行重写。 * * 如何验证是否对父类的方法重写成功呢? * 万一 父类的使getObejct 子类重写 get0bject() * 在方法的上面添加 @Override 注解 这个注解或帮我们验证是否重写成功 如果不成功会报错

javascript 原型继承 与class extends 继承对比

末鹿安然 提交于 2019-11-29 08:37:44
//父类 Animal function Animal (name) { this.name = name; this.sleep = function () { console.log(this.name + '正在睡觉!') } } //cat 是 Animal 的子类 function Cat (name,age) { Animal.call(this,name); //子类 Cat 新增加的 成员 age eat() Cat.prototype.age = age; Cat.prototype.eat = function () { console.log(this.name + 'is cat ' + '正在吃东西'+' my age is '+ this.age) } } //---------调用代码--------------------- var animal_obj = new Animal('动物'); animal_obj.sleep(); var cat_obj = new Cat('猫',10); cat_obj.sleep(); cat_obj.eat(); //-------------------------------------------------------class------------------------------------

python类的继承的两种方式写法

江枫思渺然 提交于 2019-11-29 05:55:27
class Animal(object): """docstring for Animal""" def __init__(self, name): self.name = name def run(self): print ('Animal is running...',self.name)class Dog(Animal): """docstring for Dog""" def __init__(self,name): # super(Dog, self).__init__(name) Animal.__init__(self,name) def printName(self): print ('Name: %s' % self.name)kk=Dog("kity")kk.printName()kk.run() 来源: https://www.cnblogs.com/bobo200/p/11457396.html