美文网首页
对比几种常用语言的类,实例,类属性、方法,实例属性、方法等

对比几种常用语言的类,实例,类属性、方法,实例属性、方法等

作者: 玄月府的小妖在debug | 来源:发表于2018-04-27 14:37 被阅读92次

    1、类和构造函数

    构造函数:初始化实例
    实例属性:定义在方法中的变量,只作用于当前实例
    实例方法:属于实例的函数

    1.js主要靠原型创造对象,ES6出现了class语法糖

    class People {
    //构造函数
    //实例属性 
      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:
    #构造函数
    #name、age实例属性
       def __init__(self, name, age):
          self.name = name
          self.age = age
      # getInfo实例方法
       def getInfo(self):
          print "Name : ", self.name,  ", Salary: ", self.salary
    

    类方法和静态方法

    面向对象程序设计中,类方法和静态方法常用术语
    逻辑上讲,类方法是只能由类名调用,静态方法可以有类名和对象名进行调用
    在c++中,静态方法和类方法逻辑上是等价的,只有一个概念,不会混淆(es6也是)
    但python中,分为三类方法,


    类属性:所有对象共享,通过类调用
    类方法:属于类的方法,只能访问类变量,不能访问实例变量
    类方法可以通过类对象或者实例对象调用,用途可修改类属性

    python 类属性 类方法 静态方法

    1.python里的类属性,类方法

    python里的类方法 可通过实例 也可以通过类调用

    #!/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里的静态方法

    静态方法:静态方法中不需要额外定义参数,因此在静态方法中引用类属性的话,必须通过类对象来引用

    class people3:
        country="china"
    
        @staticmethod
        def getCountry():
            return people3.country
    
    p=people3()
    print(p.getCountry())   # 实例调用静态方法 china
    print(people3.getCountry())  #类对象调用静态方法 china
    
    

    注意 python静态方法可以通过实例对象调用,而ES6不行


    ES6 静态方法和静态属性

    class Foo {
      static classMethod() {
        return 'hello';
      }
    }
    
    Foo.classMethod() // 'hello'
    
    var foo = new Foo();
    foo.classMethod()
    // TypeError: foo.classMethod is not a functio
    

    这里的静态方法又称为类方法,故而也只能使用类 调用方法
    类相当于实例的原型,所有在类中定义的方法,都会被实例继承。如果在一个方法前,加上static关键字,就表示该方法不会被实例继承,而是直接通过类来调用,这就称为“静态方法”。


    java中的面向对象

    1.局部变量:在方法、构造方法或者语句块中定义的变量被称为局部变量。变量声明和初始化都是在方法中,方法结束后,变量就会自动销毁。
    2.成员变量:成员变量是定义在类中,方法体之外的变量。这种变量在创建对象的时候实例化。成员变量可以被类中方法、构造方法和特定类的语句块访问。
    3.类变量:类变量也声明在类中,方法体之外,但必须声明为static类型。

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

    构造函数:与类同名,可以有多个

    public class Puppy{
        public Puppy(){
        }
     
        public Puppy(String name){
            // 这个构造器仅有一个参数:name
        }
    }
    

    一个源文件中只能有一个public类

    相关文章

      网友评论

          本文标题:对比几种常用语言的类,实例,类属性、方法,实例属性、方法等

          本文链接:https://www.haomeiwen.com/subject/dkfblftx.html