根据笔者的观察,现在大部分计算机or软件学院or信息工程大类or其他理工科专业的学生入门用的都是C艹这样的语言,而一些偏文的专业则是用的python,python作为一门轻量级的语言确实比C要更加的友善。但是学了C语言之后再看python会觉得这一门语言非常的不严谨,变量随便用,单双引号也很随意,不过这不影响python再某些方面(Data Analysis)能够发挥其巨大的作用。
不知不觉偏题了
C语言是面向过程的语言,C艹,Java和python都是面向对象的语言,说到Java里的面向对象,其中比较基础也比较关键的就是继承和多态了。
写于19年三月份,没想到在考试前一天才发布
继承
在对象的继承之中,子类可以获得父类所有的实例变量和方法,另一方面,子类还可以自己给自己添加新的方法或者实例变量,也可以覆盖出现在父类之中的方法。
继承有许多的好处,比如说它可以避免程序中出现重复的代码,如果许多子类都要调用相同的方法做同样的事情,那么可以在父类中就实现这个方法,子类直接调用就行了。
同样的,有的子类具有特殊的行为,所以应该拥有特殊的方法,这时候就需要新写一个方法去覆盖父类的方法了。
在面向对象编程的过程中,寻找共同的行为并抽象出来变成共同的方法是十分重要的。
对于一个新创建的对象,它会调用层次树上比它高阶的类中与它最近的那个类的方法(如果自己没有覆盖的话)。
判断两个类之间的继承关系是十分简单的,我们注意到子类可以自己写出父类没有的方法,所以我们知道子类可以做出任何父类能做的事,并且能做的更多。如果你想要在调用父类方法的同时在加上自己新写进去的方法,可以使用super.method
public void method(){
super.method();//调用父类的super
......//自己新添加的内容
}
父与子的关系也体现在父类可以决定哪些能被子类继承,哪些不可以,这就要讨论存取权限了。在Java中有以下几种存取权限
- private :Java语言中对访问权限限制的最窄的修饰符,一般称之为“私有的”。被其修饰的属性以及方法只能被该类的对象 访问,其子类不能访问,更不能允许跨包访问。
- default:即不加任何访问修饰符,通常称为“默认访问权限“或者“包访问权限”。该模式下,只允许在同一个包中进行访问。
- protected:介于public 和 private 之间的一种访问修饰符,一般称之为“保护访问权限”。被其修饰的属性以及方法只能被类本身的方法及子类访问,即使子类在不同的包中也可以访问。
- public:Java语言中访问限制最宽的修饰符,一般称之为“公共的”。被其修饰的类、属性以及方法不仅可以跨类访问,而且允许跨包访问。
修饰符 | 同一个类 | 同一个包 | 不同包的子类 | 不同包的非子类 |
---|---|---|---|---|
private | √ | |||
default | √ | √ | ||
protected | √ | √ | √ | |
public | √ | √ | √ | √ |