面向对象三大特征之【继承】,【多态】
//面向对象三大特性
//继承
//概念:子类可以继承父类的一切
//方法重写:在子类里面对父类的方法进行重写
//特点:单继承:一个子类只能有一个父类,一个父类可以派生出多个子类
//override: 重写
//overload: 重载,编程多态
//parent::值名(); 放到那个需要调用父类的值名里面的(值),的子类里面!
class Ren
{
public $name;
function say()
{
echo $this->name."正在讲话!";
}
}
class China extends Ren
{
public $dizhi;
function say()
{
parent::say(); //调用父类的say方法
echo "中国人说话";
}
}
class America extends Ren
{
function say()
{
echo "speak";
}
}
$c = new China();
$c->say();
$a = new America();
$a->say();
//面向对象三大特性
//多态(运行多态)
//概念:当父类引用指向子类实例,由于子类里面对父类的方法进行了重写,父类引用在调用该方法的时候表现出的不同状态。
//条件:1.必须发生在继承下
// 2.必须重写父类方法
// 3.父类引用调用改方法
//override: 重写:(前提:在继承的基础上,子类在获取了父类的结构以后,可以对父类中同名的方法进行“重构”)。方法的返回值,方法名,形参列表形同:权限修饰符不小于父类的同名方法;子类方法的异常类型不小于父类的;两个方法要同为{static}或同为非{static}。。
//overload: 重载,编程多态 “两同一不同”,“同一类”,同一个方法,不同的参数列表。注:方法的重载与方法的返回值无关,构造器是可以重载的。
//如果一个方法需要一个父类参数,可以给一个子类对象
//类:在PHP里不能用!但必须了解一下!
public class Ren
{
public virtual string Speak()
{
return "人在说话";
}
}
public class China:Ren
{
public override string Speak()
{
return "中国人在说话";
}
}
public class America : Ren
{
public override string Speak()
{
return "美国人在说话";
}
}
//多态:
Ren r = new Ren(); //造一个Ren类的引用指向Ren类的对象
Ren r1 = new America(); //父类引用指向子类实例
r1.Speak(); //表现出的不同,成为多态
//子类对象替父类例子
//怪兽吃人
public string Eat(Ren r)
{
return "人类真好吃";
}
America a = new America();
Eat(a);
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?