Java面向对象
面向过程
面向过程是具体化的,流程化的,解决一个问题,你需要一步一步的分析,一步一步的实现
面向对象
面向对象是一种编程思想,把项目的一些数据、方法等看成一个整体来进行编程。
三大特征
封装
隐藏具体的对象属性和实现细节,对外提供公共的使用方法。
实现方法:
私有化属性 生成get set方法。
public class User {
//private 私有化属性
private String name;
private int age;
//生成get set方法
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
继承
继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的属性和方法,或子类从父类继承方法,使得子类具有父类相同的行为。
重写:@Override
存在与子类之间,父类方法无法满足满足子类需求时,需重写父类的方法,
方法名和返回值必须和父类一样。
重载:
在本类中,方法名相同,参数不同(参数包括:类型、数量、顺序),构成重载。
子类继承父类,子类可以使用父类的非私有化属性和方法。
实现方法:
//父类
class user1 {
public void add(){
System.out.println("这个是父类的添加方法。。。");
}
}
//子类
//extends 继承 父类 user1
class user2 extends user1{
//重写父类的方法
@Override
public void add() {
//super 代指父类
//调用父类里边的方法
super.add();
}
}
多态
父类的引用指向子类的对象
实现多态的条件:
继承==>重写==>向上转型或 向下转型
class Pronse{
public static void main(String[] args) {
//父类的引用指向子类的实例
//左父类右子类
Father f= new Son();
f.add();//子类的方法
f.del();//父类的方法
}
}
//父类
class Father {
public void add(){
System.out.println("这个是父类的添加方法。。。");
}
public void del(){
System.out.println("这个是父类的删除方法。。。");
}
}
//子类
class Son extends Father{
//重写父类的方法
@Override
public void add() {
System.out.println("我调用了父亲的add方法");
super.add();
}
}
五大基本原则
单一职责原则SRP(Single Responsibility Principle)
单一职责原则就是一个类只负责一个职责,只有一个引起变化的原因。
单一职责的优点
降低类的复杂性,
提高可维护性
提高可读性。
降低需求变化带来的风险。需求变化是不可避免的,如果单一职责做的好,一个接口修改只对相应的实现类有影响,对其它的接口无影响,这对系统的扩展性和维护性都有很大的帮助。
开放封闭原则OCP(Open-Close Principle)
软件设计本身所追求的目标就是封装变化、降低耦合,而开放封闭原则正是对这一目标的最直接体现。
软件实体应该是可扩展,而不可修改的。也就是说,对扩展是开放的,而对修改是封闭的。
里式替换原则LSP(the Liskov Substitution Principle LSP)
子类可以替换父类出现在父类能够出现的任何地方。
依赖倒置原则DIP(the Dependency Inversion Principle DIP)
高层次的模块不应该依赖于低层次的模块,他们都应该依赖于抽象。抽象不应该依赖于具体实现,具体实现应该依赖于抽象。
接口分离原则ISP(the Interface Segregation Principle ISP)
设计时采用多个与特定客户类有关的接口比采用一个通用的接口要好。