无题
# Action 的委托不能有返回值
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;
//Action是一个委托,它是没有返回值的泛型委托,它可以用来替代没有参数和返回值的委托
public class Delegate_ex : MonoBehaviour
{
public delegate void Mydelegate1(int a,int b);
public delegate int Mydelegate2();
public delegate void Mydelegate3<T>(T a);
// Start is called before the first frame update
void Start()
{
Mydelegate1 showAdd = ...
无题
[[抽象方法的方法体只能在子类中实现,而不能写在基类中]]
无题
实际上虚函数就类似于初省值
# 抽象函数只能定义在抽象类中,并且不能在基类中写入方法体,只能写在子类实现
[[抽象方法的方法体只能在子类中实现,而不能写在基类中]]
抽象方法和虚函数都是面向对象编程中的重要概念,它们都可以在基类中声明,然后在派生类中进行实现。它们的主要区别在于:
抽象方法必须在派生类中进行实现,而虚函数可以选择在派生类中进行重写。
抽象方法没有实现,只有方法签名,而虚函数有默认的实现 ==(必须)==,可以在基类中提供。
抽象方法只能在抽象类中声明,而虚函数可以在普通的类中声明。
下面是一个示例,演示了如何在抽象类中声明抽象方法和在普通类中声明虚函数:
abstract class Shape
{
public abstract double GetArea();//这里的方法体必须是空
}
class Rectangle : Shape
{
public double Width { get; set; }
public double Height ...
无题
# 封装的主要目的
封装的主要目的是将数据和行为组合在一个单元中,并对外部隐藏数据的实现细节,只暴露必要的接口供外部访问。这样可以提高代码的可维护性、可重用性和安全性。
封装可以防止外部代码直接访问和修改对象的内部状态,从而避免了意外的数据修改和错误的数据访问。同时,封装还可以隐藏对象的实现细节,使得对象的实现可以自由地修改,而不会影响到外部代码的使用。
在面向对象编程中,封装是三大特性之一,另外两个是继承和多态。封装是面向对象编程的基础,它可以使得代码更加模块化、可维护性更高、可重用性更好,从而提高代码的质量和效率。