對比幾種常用語言的類,實例,類屬性、方法,實例屬性、方法等

1、類和構(gòu)造函數(shù)

構(gòu)造函數(shù):初始化實例
實例屬性:定義在方法中的變量,只作用于當(dāng)前實例
實例方法:屬于實例的函數(shù)

1.js主要靠原型創(chuàng)造對象,ES6出現(xiàn)了class語法糖

class People {
//構(gòu)造函數(shù)
//實例屬性 
  constructor(name, age) {
    this.name = name;
    this.age= age;
  }
// 實例方法
  getName() {
    return  this.name;
  }
}
var p=new People()

// 以前的原型寫法
function People(name,age){
     this.name = name;
    this.age= age;
}
People.prototype.getName=function(){
    return this.name;
}
...
  1. python
class People:
#構(gòu)造函數(shù)
#name、age實例屬性
   def __init__(self, name, age):
      self.name = name
      self.age = age
  # getInfo實例方法
   def getInfo(self):
      print "Name : ", self.name,  ", Salary: ", self.salary

類方法和靜態(tài)方法

面向?qū)ο蟪绦蛟O(shè)計中,類方法和靜態(tài)方法常用術(shù)語
邏輯上講,類方法是只能由類名調(diào)用,靜態(tài)方法可以有類名和對象名進行調(diào)用
在c++中,靜態(tài)方法和類方法邏輯上是等價的,只有一個概念,不會混淆(es6也是)
但python中,分為三類方法,


類屬性:所有對象共享,通過類調(diào)用
類方法:屬于類的方法,只能訪問類變量,不能訪問實例變量
類方法可以通過類對象或者實例對象調(diào)用,用途可修改類屬性

python 類屬性 類方法 靜態(tài)方法

1.python里的類屬性,類方法

python里的類方法 可通過實例 也可以通過類調(diào)用

#!/usr/bin/env python
# -*- coding: utf-8 -*-
class Person:
    country = 'Chinese'    # 類屬性
    def __init__(self, name, country):
        self.name = name
        self.country = country

    @classmethod
    def nationality(cls):    # 這里將sefl 改為 cls

        print('Bigberg is %s.' % cls.country)

p = Person('Bigberg', 'CN')

print Person.country #Chinese
Person.nationality() #Bigberg is Chinese.

p.nationality() #Bigberg is Chinese.

2.python里的靜態(tài)方法

靜態(tài)方法:靜態(tài)方法中不需要額外定義參數(shù),因此在靜態(tài)方法中引用類屬性的話,必須通過類對象來引用

class people3:
    country="china"

    @staticmethod
    def getCountry():
        return people3.country

p=people3()
print(p.getCountry())   # 實例調(diào)用靜態(tài)方法 china
print(people3.getCountry())  #類對象調(diào)用靜態(tài)方法 china

注意 python靜態(tài)方法可以通過實例對象調(diào)用,而ES6不行


ES6 靜態(tài)方法和靜態(tài)屬性

class Foo {
  static classMethod() {
    return 'hello';
  }
}

Foo.classMethod() // 'hello'

var foo = new Foo();
foo.classMethod()
// TypeError: foo.classMethod is not a functio

這里的靜態(tài)方法又稱為類方法,故而也只能使用類 調(diào)用方法
類相當(dāng)于實例的原型,所有在類中定義的方法,都會被實例繼承。如果在一個方法前,加上static關(guān)鍵字,就表示該方法不會被實例繼承,而是直接通過類來調(diào)用,這就稱為“靜態(tài)方法”。


java中的面向?qū)ο?/h3>

1.局部變量:在方法、構(gòu)造方法或者語句塊中定義的變量被稱為局部變量。變量聲明和初始化都是在方法中,方法結(jié)束后,變量就會自動銷毀。
2.成員變量:成員變量是定義在類中,方法體之外的變量。這種變量在創(chuàng)建對象的時候?qū)嵗?。成員變量可以被類中方法、構(gòu)造方法和特定類的語句塊訪問。
3.類變量:類變量也聲明在類中,方法體之外,但必須聲明為static類型。

public class Dog{
  String breed;
  int age;
  String color;
  void barking(){
  }
 
  void hungry(){
  }
 
  void sleeping(){
  }
}

構(gòu)造函數(shù):與類同名,可以有多個

public class Puppy{
    public Puppy(){
    }
 
    public Puppy(String name){
        // 這個構(gòu)造器僅有一個參數(shù):name
    }
}

一個源文件中只能有一個public類

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容