在上一篇博客中已经把面对对象的简单思维已经解释,现在就根据这些解释,进行面对对象编程的具体特点。
(这里只是讲解一部分编程意识想法,如果有其他建议可以在评论区中说出来)
特点1、封装:
封装:(建议先百科后在看)不让外界(类外)直接调用类的字段或者私有方法进行操作,就是自定义类的字段和方法进行包装起来,然后通过类中设定的公有的方法给外界调用,从而增加一点操作数据的安全性。
- 封装的意识(封装好的基类,就是j2ee中的javabean)
找对象(api文档)、创建对象、怎么使用和维护对象
- 在Java 中的体现及步骤
- 把类中的字段私有化;
- 给每一个字段都提供一组getter setter方法 (方法的规范写法);setXxx
在测试类中尝试创建对象,并通过调用getter setter方法完成 对字段的赋值和取值;
- 提供一个无参数的构造方法
例子:
class.Person{
private int d;
省略getset方法(eclipse快捷方式:shitf+alt+s自动生成)、构造方法
}
特点2 继承
继承:在多个子类的基础上面抽取共有属性的行为到一个父类中去,或者从一个类延伸其他字段和方法,拥有父类属性和行为,又拥有自己的独有的东西(属性、行为);拓展对象类的设定,可以增加类的复用率,减少代码冗余
1.解析继承:
- 三个类都有重复的代码,可以把这部分内容 抽出去,抽出去放到另外一个类里面;上面的类我们叫做 父类(超类,基类,根类)
- 下面的3个类和上面的类需要发生一点关系【继承】
- 下面的类我们叫做 子类(派生类,拓展类)
2.意识:
在设定一些工具类时,可以根据功能延伸时通过继承再进行添加类中功能;
在设定多个对象自定义类时,可以将相同功能和字段提取出来,形成根类,规范代码的编写,增加代码的阅读的速度
(类与类、接口与接口都是可以继承的)
3.特点:
- java中只支持单继承
- 但也支持多重继承关系
- 没有显示的继承,那么隐式的继承Object
- 只能继承到父类的私有属性
4.例子:
class Fruit{
}
class Apple extends Fruit{
}
class Banana extends Fruit{
}
class Pear extends Fruit{
}
特点3 多态
前提:拥有继承关系
在父类对象中,存放子类的对象,让对象拥有多种形态变化称为多态(体现类与类之间的关系)
编译时:在java中进行编译时,对象调用的方法会先检验父类
运行时:实际调用的是子类的方法(子类没有,会向上往父类找)
1.多态解析:
- 编译时 :
Fruit f = new Pear();f.getName();
- f 编译时,看的是父类类型,会在父类类型中getName方法
- 如果没有找到,会继续向上找[f编译时父类类型]
- 找到:编译通过
- 找不到:编译报错
- 注意:是不会向下找的[f编译时子类类型]
- 如果没有找到,会继续向上找[f编译时父类类型]
- 运行时 :
- 先到运行时类型[Pear]中找getName方法,
- 如果找到:就执行,
- 没找到:向上到父类中找并执行
- 先到运行时类型[Pear]中找getName方法,
2.意识:
- 在逻辑层中,尽量少使用多态(减少逻辑实现类与类之间的复杂性,多态使用过多对象,会影响自身判断)
- 在业务层中,尽量多使用多态(增加查看业务时类与类之间的继承关系性,可加快理解代码)
3.例子:
class Fruit{
void getName(){}
}
class Apple extends Fruit{
void getName(){}
}
class Banana extends Fruit{
}
class Pear extends Fruit{
}
多态:
Fruit ft = new Apple();
ft.getName();//这里调用的是Apple 类的getName()方法
之后,面对对象的介绍结束了。
说到这,面对对象的这三个特征,已经解析完了,这些是我自己的一些理解,肯那个有些不到位,希望不要介意,可以去评论,多谢