Java oop(一些自己的理解,并没有展开很细)
一下内容是自己总结用的,只是按照自己的理解去写。参考的是菜鸟教程。
Java 是一个面向对象的语言。
OOP就是面向对象编程。
封装:在某些类里面,某些属性不想向外暴露,但是我们又想提供一个方法去访问或修改它,怎么办?
封装此刻就是解决这个问题:
如有一个Student类
public class Student{
//构造函数,可以写可以不写,不写就默认用Java提供的默认构造函数
private int number;
private String name;
public void setNumber(int number){
this.number = number;
}
public int getNumber(){
return this.number;
}
public void setName(String name){
this.number = number;
}
public int getName(){
return this.name;
}
}
此刻,Student类的俩个属性是private(私有)的,我们不能直接用:
Student stu = new Student();
stu.number = 4;
stu.name = "test";
但是方法是public(公共)的,我们可以通过调用这些方法去写入或获得这俩个私有属性:
Student stu = new Student();
stu.setNumber(4);
stu.getNumber;
stu.setName("test");
stu.getName;
这就是对类的封装,封装有什么好处?
1. 良好的封装能够减少耦合。
2. 类内部的结构可以自由修改。
3. 可以对成员变量进行更精确的控制:
类的成员变量可以成为只读或者只写的。
例如访问器getXxxx();修改器setXxxx(); 通过这些可以控制读写权限
4. 隐藏信息,实现细节:
比如这是一个类中得到生日的方法
public String getBirthday(){
return year + "-" + month + "-" + day;
}
public void setBirthday(String birthday){
//拆分字符串,分别取出年月日,给year、month、day进行赋值
}
而在外部调用这个方法的时候
this.getBirthday();
this.setBirthday("1990-9-9");
此时就体现出外部是不知道如何储存birthday这个方法的,用户只能调用它。
继承
Java里,可以让一个子类去extend(继承)一个父类,并且一个子类只能继承一个父类,
子类会继承父类的所有方法。
而在这些方法中,只要不该方法名称 和其参数类型和数量,只对方法里面的代码进行重写,则叫重写,
如果这些方法中,名称不变,但是参数类型有变,或者参数数量有变,又或者俩者都有变,则叫重载。
重写和重载是多态的一部分。
当然有可能父类是个抽喜类,子类继承抽象类则要对父类里的抽象方法加上具体的代码,如果没有则子类中的这个方法也要声明为抽象方法,子类则声明为抽象类,默认public。
由子子类去继承实现抽象方法(你也可以继续上面的情况)。
多态
一个工具,不同的使用就产生不同的结果或行为。
多用于接口?
其中重写和重载是多态的重要部分。
重写要有继承,并且发生在俩个类之间(父子类)
重载发生在一个类之间。