面向对象(OOP)
OOP?OOM?OOP即为我们说的面向对象的思想,而OOM是面向内存的思想,例如C语言就是OOM语言,它可以直接对我们的计算机内存进行操作,需要考虑内存的性能以及对象的回收。而像Java等都是面向对象的语言,只要关心对对象的操作,而内存的管理交给Jvm虚拟机。
面向对象可以理解为现实世界模型的自然延伸,是一种“万物皆为对象的编程”。在现实生活中。任何一个事物都可以归结为一个类事物,每一个个体都是一个类的实例。面向对象编程是以对象为核心,以消息为驱动,所以程序=对象+消息。面向对象的主要特性有封装、继承、多态。
封装
面向对象的封装就是将我们的程序模块化,对象化,好比我们可以将程序比作一个人,将人物的的一些特征属性(比如头,手,足),还有对属性的一写动作(吃喝拉撒)都放到一个类里,这就是封装。
//将人封装为一个类将名字、年龄、性别
public class Person {
private String name;
private Long age;
private char sex;
private Double height;
public void eat() {
}
public void drink() {
}
public void sleep() {
}
public void run() {
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Long getAge() {
return age;
}
public void setAge(Long age) {
this.age = age;
}
public char getSex() {
return sex;
}
public void setSex(char sex) {
this.sex = sex;
}
public char getHeight() {
return height;
}
public void setHeight(char height) {
this.height = height;
}
}
继承
继承以人的角度来看的话,可以理解为一个对一个事物的延伸,进一步将一个事物的共有属性和行为进行抽象为父类,而继承他的子拥有父类的所有属性以及方法,可以对方法进行重写或者重载。
//例如学生和教师个体都继承人这个类,都有着人的特性。教师有自己的特性比如教书,学生也有自己的特性比如听课。
public class Student extends Person{
public void listen(){
}
}
public class Teacher extends Person{
public void teach(){
}
}
多态
同一操作,作用于不同的对象,可以产生不同的结果,就是多态。通常来说多态都是指运行期的多态,即是动态绑定。
满足三个条件:
- 有类继承或接口实现
- 子类重写父类的方法
- 父类指向子类的实例。
例如,我们可以用人的类来创建出教师和学生不同的实例,来实现不同的实例方法。
public static void main(String[] args) {
Person student = new Student();
Person teacher = new Teacher();
student.eat();
teacher.eat();
}
以上便是面向对象编程的一个思想,是不是很简单呢?我是小小骚羊,一个生存在互联网的工具人,喜欢的我的就关注我哈!