前言
写这些只是为了我自己梳理学习后的理解,通过自己的话来表达我自己的学习结果。
有的浅谈了,有的深谈了一下。有点随心所欲,看看就好。
有问题欢迎指出,一起学习。
面对过程
面对过程是一种思想。C语言就是这种思想。
面对过程的这种思想当中,主要是对 在解决一个问题中,其中解决这个问题的过程是具体如何实现的。
方便理解,我来打个比方,我们晚上要炒菜做饭。
要解决这个问题,我们得先思考如何实现它,或者说实现这个问题的过程是什么。
那么如何实现做饭,我们可以分为这四步骤:
1.我们要去超市中买菜。
2.我们要回家把菜洗干净。
3.我们要把洗好的菜放入锅中进行翻炒。
4.把炒好的菜用盘子呈上来。
完成这四个步骤,整个做饭,这个问题我们就解决了。
用Java代码可以这样展示
public class HowToCook {
public static void main(String[] args) {
//第一步
buyVegetables();
//第二步
washVegetables();
//第三步
fryVegetables();
//第四步
dishOutVegetables();
//完成
System.out.println("完成做饭");
}
public static void buyVegetables(){
System.out.println("我们要去超市中买菜。");
}
public static void washVegetables(){
System.out.println("我们要回家把菜洗干净。");
}
public static void fryVegetables(){
System.out.println("我们要把洗好的菜放入锅中进行翻炒");
}
public static void dishOutVegetables(){
System.out.println("把炒好的菜用盘子呈上来。");
}
}
代码输出结果:
我们要去超市中买菜。
我们要回家把菜洗干净。
我们要把洗好的菜放入锅中进行翻炒
把炒好的菜用盘子呈上来。
完成做饭
Process finished with exit code 0
面对对象
面对对象是一种思想。Java就是这种思想。
面对对象这种思想中,主要是对 在解决一个问题中,其中解决这个问题是找谁解决,而不是考虑如何解决这个问题(换句话说就是解决这个问题的过程具体是什么)
还是用刚刚做饭的例子:
如何解决做饭这个问题呢,可以联想到现实生活中,晚上我们是谁做的饭呢。就我家是我老爸做的饭。所以我们可以找他来解决这个问题。
代码实现如下:
从这段代码中我们是不是看不到,具体实现的过程是怎么样子的呢。
只看到了创建了一个father对象,并调用了makeVegetables方法。那么结果是不是和刚才一样呢?
public class HowToCook {
public static void main(String[] args) {
//爸爸叫来,告诉爸爸,今晚你来做饭。
Father father=new Father();
//爸爸来做饭。
father.makeVegetables();
}
}
那Father类中就是解决该方法的具体过程了。我们来看看代码是怎么样子的。
public class Father {
public static void makeVegetables() {
buyVegetables();
washVegetables();
fryVegetables();
dishOutVegetables();
}
public static void buyVegetables(){
System.out.println("我们要去超市中买菜。");
}
public static void washVegetables(){
System.out.println("我们要回家把菜洗干净。");
}
public static void fryVegetables(){
System.out.println("我们要把洗好的菜放入锅中进行翻炒");
}
public static void dishOutVegetables(){
System.out.println("把炒好的菜用盘子呈上来。");
}
}
那么结果是不是和刚刚的一样呢?显而易见是一样的。
而在这个过程就体现了面对对象的封装特征:不需要考虑如何解决问题的过程,而是考虑找谁来解决这个问题。
我们要去超市中买菜。
我们要回家把菜洗干净。
我们要把洗好的菜放入锅中进行翻炒
把炒好的菜用盘子呈上来。
Process finished with exit code 0
封装
官方概念:指一种将抽象性函式接口的实现细节部分包装、隐藏起来的方法。
听起来很模糊,看看刚刚的案例。应该就不难理解了,我就不再重复举例了。
通过刚刚的例子,就能理解封装的思想是什么了。至于官方概念中的接口之类的,我属实打到这里不想打字了,就不深入讲解了。
继承
官方概念:继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。
比如我们的父亲有
两只手、两条腿、一个鼻子、一张嘴。(属性)
会吃饭、会喝水、会拿快递、会打嘴。(行为)
【其中的打嘴,是指儿子犯了错误,父亲扇嘴巴的行为。
自己突然灵感而发的打油诗,不要深究含义,仅仅方便大家记忆。】
那我们自己的身体是不是也具备同样的属性呢?
那我们自己是不是也会做这些行为呢?
答案也是肯定的。
那么父亲会的,我们也会,那么我们可以说这些是我们从父亲那里继承而来的。
多态
官方概念:相同的消息给予不同的对象会引发不同的动作。(或者说同一种行为,在不同对象中的不同实现。)
那么这些行为当中,父亲所做的行为和我们做这些做这些事情的是不是完全一样呢?
那不一定,比如
父亲吃饭用筷子;我们吃饭用勺子。
父亲喝水双手捧着杯子喝水;我们比较帅,单手拿着杯子喝水。
那么这些同一种行为,在我和父亲身上的不同展现,就是多态。
其中分为重写式多态和重载式多态。
官方概念:重写:子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变。
条件:必须存在继承关系。而且参数列表与被重写方法的参数列表必须完全相同。
例子:而重写就是刚刚的例子,我们继承了父亲的行为,所做出的不同的实现。
官方概念:重载:在一个类里面,方法名字相同,而参数不同。
如果有两个方法的方法名相同,但参数不一致,哪么可以说一个方法是另一个方法的重载。
条件:必须条件方法名相同。满足必须条件的同时必须满足以下条件一个及以上
- 方法的参数类型,参数个不一样
- 方法的返回类型可以不相同
- 方法的修饰符可以不相同
- 额外说明:main 方法也可以被重载
例子:我们实现做饭这个行为:我们放一个鸡蛋去抄,和我们放番茄+鸡蛋去炒。是不是不一样?
而这就是重载的一种。