一、前言
小编记得,刚接触计算机相关的课程的时候,接触的是c++,c++的老师一上来就说c++是面向对象的,c语言是面向过程的。面向对象比面向过程厉害,是从面向过程发展过来的的。
当时有一个发小学的c语言,我就说,我学的比你的厉害。。O(∩_∩)O哈哈~
到现在才慢慢的理解了什么是面向对象。这篇博客就针对咱们的这些概念结合生活,再结合代码把面向对象的特征体现出来。
二、面向对象的特征
很多人都知道,面向对象的特征有封装、继承、多态。
先来一波理论:来自《疯狂java讲义》
Java是面向对象的程序设计语言,提供了private、protected和public三个访问控制修饰符来实现良好的封装,提供了extends关键字来让子类继承父类,子类继承父类就可以继承到父类的成员变量和方法,如果访问控制允许,子类实例可以直接调用父类里面的方法。
其实在我们学习的过程中,也慢慢接触了java的面向对象。
三、封装
一句话说说:
把一类对象,相似的属性汇总到一起,组成一类,这个类把该隐藏的隐藏,该暴露的暴露。
java提供了三个访问控制符:private、protected和public,分别代表了三个访问控制级别,另外有一个不加任何访问控制符的访问控制级别,由小到大:
访问控制符 | 说明 |
---|---|
private | 被修饰后,这个成员只能被当前类内部访问 |
default | 包访问权限,被修饰的成员或者外部类可以被相同包下的其他类访问 |
protected | 子类访问权限,被修饰成员可以被同一个包中其他类访问,也可以被不同包中的子类访问 |
public | 公交车,被修饰的成员可以被所有类访问 |
代码很常见,简单一个类:
public class A{
....
}
四、继承
一句话说说:
涉及到父子关系,自类可以得到父类的特征,相对是父类的拓展,达到代码重用的效果
Java中用extends关键字,实现继承类被称为子类,被继承类被称为父类。例如,水果和苹果的关系,苹果继承了水果,苹果是水果的子类,水果是苹果的父类。
五、多态
一句话说说:
多种形态,多种实现形式
在代码中就是一个方法名字,多种实现形式。重载(overload)和重写(override)是多态的两种主要形式。
重载(Overload)java代码中,一个类可以有多个方法名相同、参数不同的方法。
重写(override)java代码中,子类继承父类,可以重写父类的方法
重载demo:
public class A{
public void test(){
....
}
public Integer test(){
.....
}
public void test(Integer a){
.....
}
}
这里小编可以说说重载的机制:动态联编。当有方法调用A类的test方法的时候,处理器会根据test方法的参数类型、返回值类型自动判断出要调用那个方法。所以java还是为我们铺垫好了很多呢~!
重写(override)demo:
public class A{
public test(){
....
}
}
public class B extends A{
public test(){
******
}
}
在上面的代码中,很容易看出使用了继承的关系,在继承中,B类继承了A类,B是A的子类。同时B类可以访问A类的所有非private的方法。B类中也定义了一个和A类一样的方法test,这个就是对A类的方法重写。
六、小结
可以说面向对象的三大特征都是会被问到的在面试中,我们还是要深刻的理解一下,最好是理论结合代码来解释,空范范的理论会让人感觉有点是刚从学校出来的样子。所以要多结合代码解释。