オブジェクト指向(OOP)の理解
このプログラムが好きな友達は、誰もが「すべてがオブジェクトである」という文を聞いて、古いXを感じているはずです。
オブジェクト指向プログラミング、それは現実世界を中心に設計されています。
オブジェクト指向の3つの要素:カプセル化、継承、ポリモーフィズム。
車を表すクラスを定義し、車のいくつかの属性と動作を定義できます。ただし、実際には、バス、トラック、タクシーなど、多くの種類の車があります。毎回対応するクラスを定義する必要がありますか?この場合、問題が多すぎます。これらの車が車のカテゴリに属しているかどうかに関係なく、一度抽象化できます。この場合、誰もが持つ多くの属性と動作がありますが、それらは異なります。次に、抽象クラス(Vehicle)を定義し、バス、トラック、およびタクシーにこのクラスを継承させて、それを書き換えるだけで済みますメソッド、または対応するプロパティを変更します。上記の作業が完了すると、バス、トラック、およびタクシー(つまり、新しいオペレーション)をインスタンス化できます。インスタンス化した後でのみ、オブジェクトを呼び出すことができます。このことから、すべてがオブジェクトなので、当然理解してください。
(ガールフレンドがいない場合は、新しいものを手に入れましょう)
目の疲労を和らげる
2つの主要なオブジェクト指向言語があります。1つは厳密に型指定されたもの(C#、Javaなど)、もう1つは弱く型指定されたもの(JavaScript)です。
1.まず、強く型付けされたC#言語を使用して、オブジェクト指向を具体的に導入します。(Javaは個人的にあまり知りません...)
コードは次のとおりです:
カプセル化
//定义一个抽象类 Vehicle 将一些属性跟行为封装在这个类里供后面的类继承
abstract class Vehicle()
{
public string myName;//这个是字段,不是属性
//属性
public string Appearance { get; set; } = "red"; //外观颜色,默认是红色,而且该属性可读可写
public string Weight { get; set; } = "1.8t" //车身重量
public string Brand { get; set; } //品牌
//行为(方法)
public virtual void Run() //使用virtual关键字以供继承它的类重写该方法
{
//启动
}
public virtual void Stop()
{
//停车
}
}
相続
class Car : Vehicle()//小轿车继承Vehicle这个类
{
//属性重新赋值---构造函数(用来构造对象的,顺便设置本类的部分属性值)
public Car()
{
this.Appearance = "小轿车外观";
this.Weight = "1.5t";
}
//行为(方法) 重写Vehicle里面的Run方法
public override void Run()
{
//小轿车启动
}
public override void Stop()
{
//小轿车停车
}
}
class Bus : Vehicle()
{
//属性
public Bus()
{
this.Appearance = "公交车外观";
this.Weight = "2t";
}
//行为(方法)
public override void Run()
{
//公交车启动
}
public override void Stop()
{
//公交车停车
}
}
ポリモーフィズム
class static void Main()//程序入口
{
Car car = new Car();//实例化一个对象
car.Brand = "劳斯莱斯";//重新设置属性的值
car.Run();//启动小轿车
Bus bus = new Bus();
bus.Run();//启动公交车
//小轿车和公交车调用了同一个Run方法,却产生了不同的效果;
这便是多态,不同的对象调用调用同一个方法,产生了不同的行为。也是面向对象程序设计的魅力所在
}
2.次に、弱く型付けされたJavaScript言語を使用して、オブジェクト指向を導入します。
コードは次のとおりです。
//最简单的方式
var Vehicle={
Appearance:"",
Weight:"",
Brand:"",
Run:function(){},
Stop:function(){}
}
//js语言也可以设置某个属性是可读还是可写,只不过稍微有些复杂
如下:
Objec.defineProperty(Vehicle,"Appearance",{
writable: false//不可写,意思就是不能修改该属性的值
})
//组合使用构造函数模式跟原型模式---这里可能有些复杂,具体原型在之后的博客中详细介绍
function Vehicle(Appearance,Weight,Brand)
{
this.Appearance=Appearance;
this.Weight=Weight;
this.Brand=Brand;
}
Vehicle.prototype={
constructor:Vehicle,
Run:function(){},
Stop:function(){}
}
強い型と弱い型の違いを説明するためにここを参照してください:
強い型:特定の値の型を参照することは確かです、int型変数の定義、intキーワードを使用する必要があります;文字列型変数の定義、stringを使用する必要がありますキーワード。C#は変数を定義するためのvarキーワードの使用もサポートするようになりましたが、定義するときに値を割り当てる必要があります。原則は、変数が割り当てられた値に基づいてどのタイプであるかを推測することです。つまり、割り当てられた値に基づいて、varがintまたはstringのどちらを参照しているかを推測します。
弱い型付け: JavaScriptでは、varを使用して定義できる変数のタイプに関係なく、すべての変数はvarキーワードを使用して定義されます。
目の疲れを和らげる2
ちなみに、 C#(Java)もサーバー側の言語のランクに属し、JavaScriptはクライアント側の言語に属しています。
どういう意味?
つまり、C#はサーバーで実行され、JavaScriptはクライアントで実行されます。私たちが通常閲覧するWebページのJavaScript言語はブラウザーで実行されています。ブラウザーを介してJavaScriptコードを直接見ることはできますが、サーバー側の言語を見ることができません。