类和实例调用方法和属性傻傻分不清?不急,慢慢就清楚了

实例对象能调用类方法吗?能调用静态方法吗?能调用类属性吗?

类能调用实例方法吗?能调用静态方法吗?能调用实例属性吗?

很多时候我们都被这些小问题所困扰。如果我们静下来慢慢想,会发现这些并不难,只是容易记混淆。看完这篇文章,希望能帮助你更容易记住这些讨厌的家伙。来,我们先看代码。先定义了一个类,再用实例对象和类一个一个访问,最后得到结果

类和实例调用方法和属性傻傻分不清?不急,慢慢就清楚了类和实例调用方法和属性傻傻分不清?不急,慢慢就清楚了

执行完后的结果,第一个init是创建对象后执行的

类和实例调用方法和属性傻傻分不清?不急,慢慢就清楚了


由上面不难发现,前面几个都可以,唯独最后一行出现程序崩溃情况,说明最后一个类调用实例属性出现错误,由此可知,类可以调用实例方法、静态方法、类方法和类属性,但是不能调用实例属性,实例对象可以调用实例方法、类方法、静态方法、类属性和实例属性的,总结起来就是下面一句话。

实例对象能调用以上列举的所有方法和属性,

而类除了不能调用实例属性,其他的方法和属性都能调用。