首页 > 其他分享 >L10.面向对象

L10.面向对象

时间:2023-03-07 23:01:15浏览次数:29  
标签:showInfo .. -- self L10 面向对象 ParentClass SonClass

--父类
local ParentClass = {
    id  = "085",
    name = "紫霞",
    --ParentClass.__index = ParentClass   #自索引错误写法, __index赋值的是一个nil值, 也就是说ParentClass是一个nil值
}

--[[
   function ParentClass.showInfo() --#报错, "."不支持self, 必须是":"调用才支持self
       printEx("编号:" .. self.id .. " 名字:" .. self.name)
    end
--]]

function ParentClass:showInfo() --为什么会在外面单独赋值, 而不是写在ParentClass表里面赋值, 因为没有这种写法, 必须写在外面赋值
    printEx("编号:" .. self.id .. " 名字:" .. self.name)
end

ParentClass.__index = ParentClass   --自索引

--写在自索引赋值后面子类继承后依旧可以调用此函数
function ParentClass:method() 
    printEx("我是父类的方法")
end

--ParentClass.showInfo()    #报错, .不支持self, 必须是:调用才支持

ParentClass:showInfo()


--子类

local SonClass = {
    id = "1085",
    name = "紫霞的儿子"
}

function SonClass:showInfo()        --显示信息方法重写
    printEx("编号:" .. self.id .. " 名字:" .. self.name)
end

SonClass:showInfo()


--子类继承父类需要用到元表中的__index 或者 传参(不推荐)


setmetatable(SonClass, ParentClass)    --子类继承父类中的字段

--调用子类重写的showInfo方法
SonClass:showInfo()

--调用继承父类的method方法
SonClass:method()

 

标签:showInfo,..,--,self,L10,面向对象,ParentClass,SonClass
From: https://www.cnblogs.com/xgkj/p/17190078.html

相关文章

  • 5 面向对象
    面向对象1、面向过程&面向对象面向过程思想步骤清晰简单,第一步做传么,第二步做什么....面对过程适合处理一些较为简单的问题面向对象思想物以类聚,分类的思......
  • C# 面向对象编程(OOP)
    C#面向对象编程(OOP)C#是面向对象的编程语言,对象就是面向对象程序设计的核心。所谓对象就是真实世界中的实体,对象与实体是一一对应的,也就是说现实世界中每一个......
  • C# 面向对象 类和对象的声明及使用
    C#面向对象类和对象的声明及使用C#是面向对象的编程语言,对象就是面向对象程序设计的核心。所谓对象就是真实世界中的实体,对象与实体是一一对应的,也就是说现实......
  • 开心档之Python3 面向对象
    Python3面向对象Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的。本章节我们将详细介绍Python的面向对象编程。如果你以......
  • JavaSE——面向对象三大特征之—多态
    多态的形式多态是继封装、继承之后,面向对象的第三大特性。多态是出现在继承或者实现关系中的。多态体现的格式:父类类型变量名=new子类/实现类构造器;变量名.方法......
  • JavaScript对象及面向对象基础(对象、构造函数、原型对象、继承、原型链、借用构造函数
    JavaScript是一种描述性语言,是一种基于对象和事件驱动的,具有安全性能的脚本语言。JavaScript语言是通过一种叫做“原型”的方式来实现面向对象编程的。一、对象(1)内置对象Str......
  • C++ 面向对象程序设计(中)
    (上)讲述了基于对象,(中)则是在基于对象的基础上,建立类与类之间的联系,即面向对象编程以及面向对象设计。主要讲述以下三点:Inheritance(继承)Composition(复合)Delega......
  • 面向对象(可增加)
    引用传递和值传递引用传递:类的对象在方法中当做形参传递时,对其中类对象的操作会影响实参值传递:八大基本类型的数据当做形参传递时,不会对实参产生变化类和对象的关系类......
  • 版本号及面向对象设计原则
    1.版本号软件版本号就是商品的型号。常见的版本号命名规则和几种类型[name].x.y.z-[state]name 为可选段,一般为v,表示Version;x.y.z 为各版本的序号,一般都会遵循语义......
  • Java 面向对象
    1、构造方法每个类都有构造方法。如果没有显式地为类定义构造方法,Java编译器将会为该类提供一个默认构造方法。在创建一个对象的时候,至少要调用一个构造方法。构造方法的......