面向对象理解
刚学java的时候就知道一句话 "万物皆对象"
,那我就说说我对面向对象的理解吧!
面向对象思想
举个例子,我要买房,但是我不懂怎么买房,但是中介懂,所以我就出钱,叫中介帮我找房子,我就坐在家里等消息就行了
意思就是说,别人替我干活,而我只要出钱就行。就像Java中我想要排序一堆数字,我实现的排序数字的话太慢了,我就直接调用Java提供的Arrays类Sort方法即可排序。
面向对象编程
OOP即是面向对象编程
,将现实生活中的一类事物以代码形式体现出来.。
面向对象的三大特征:封装,继承,多态。
先说说封装,封装的意义在于两个
1:隐藏对代码的实现,对外只提供我暴露的接口或方法。
意思就是说,我写了一段代码,但是我不想让你知道我写了什么,但是又想给你用,所以我提供了一个路径给你,你调用这个路径就行了。
2:将类的属性和方法看做成一个整体。
类是一个抽象概念,对象是一个具体的概念,一个类的属性和方法是描述一类对象的基本;一个类不能单单看这个属性或者方法就能描述或者说确定这个对象,必须属性 + 方法,所以有必要将属性和方法看做成一个整体。
继承:继承意义有两个
1:让子类加强父类的某个方法。
打个比方,我做了第一版本的汽车,充电就可以开车,现在我要将我的第一版的车加强功能,加一个太阳能充电功能,我就直接在原来车的顶部加上太阳能板就行了。第一版本的车就是我的父类,第二板本就是子类,在我不改变父类的前提下在子类加强了功能。
2:代码重用:
这个就不说了自己理解
多态:多态是个特别抽象的概念,不是一句两句或就能理解的,必须需要经验和能力的积累,才会对多态有更深的理解
多态分为 方法的多态
与 对象的多态
,方法多态分为重载和重写,意义在于参数统一。
对象的多态 意义 在于向上转型
,还有向下转型
:
1:向上转型的意义—》扩展性。
2:向下转型的意义—》调用子类的特有方法,首先要有向上转型才有向下转型,不然的话我直接new对象就好了,干嘛还要向下转型呢!
用代码举个多态的例子
创建一个购物车接口
public interface ShoppingCart{
}
创建一个生活商品类
public class Life implements ShoppingCart{
//towel方法
public void towel(){
System.out.println("towel!!");
}
//broom方法
public void broom(){
System.out.println("broom!!");
}
}
创建一个家具
public class Furniture implements ShoppingCart{
//move方法
public void move(){
System.out.println("move");
}
//keyboard方法
public void keyboard(){
System.out.println("Keyboard!");
}
}
测试
public static void main(String[] args){
//当我只买一个生活类商品时直接new Life()类就可以啦
Life life1 = new Life();
life1.towel();
/**
* 假如你要买东西,要买各种类型的东西,定义一个ShoppingCart接口就可以买各种东西,为了扩展性
* 假如你向上转型了你就无法对其他两个类的方法进行调用,所以需要向下转型
*/
//向上转型 购买life商品
ShoppingCart sc1 = new Life();
sc1.towel();
//向下转型 购买Furniture
Furniture furniture = (Furniture)sc1;
furniture.move();
}