一、面向过程和面向对象编程思想
面向过程编程
Procedure Oriented Programming 简称为POP
是一种基本的编程思想,是将一件事情按流程逐步实现。这种思想强调事情完成的过程,分析步骤写出相应的代码。
如猜拳游戏,每一个步骤都能按顺序用代码描述出来,逻辑清晰。
但如果逻辑复杂,如象棋游戏,则无法使用POP的思想实现。
C语言就是一门标志性的面向过程编程语言。
基础部分写的所有代码,都是面向过程的,都是一步步按序执行。
面向对象编程
Object Oriented Programming 简称OOP
是当前主流的编程思想,将解决问题的所有参与对象创建出来,赋予对象对应的行为和属性让这些对象互相配合完成,实现最终效果。
这种思想致力于将计算机中的世界,描述的和现实中一致
面向对象和面向过程:不同思想处理同一种问题
如洗衣服。
如果用POP:得到衣服、得到搓衣板、得到洗衣服、得到水、搓洗。。。
如果用OOP:创建一个能洗衣服的工具:洗衣机,让洗衣机拥有洗衣服的行为,调用该行为即可。
如组装电脑。
POP:列举所有配件,自己去商场购买,自己带回家,自己组装。
OOP:让伯伯推荐配件,让弟弟去商场购买,让快递送回家,让邻居组装。
总结
面向过程:亲力亲为,侧重于分析过程。
面向对象:所有事情交给相应的对象完成,侧重于如何创建对象。
二、类和对象
类Class
具有相同的属性和行为的对象的集合,称为"一类"。类也可以称为模板。
属性:描述对象的特征,在程序中,通过定义变量的形式表现属性。
行为:描述对象的动作,在程序中,通过定义方法的形式表现行为。
在程序中,通过定义一个class去定义一个类。在类中定义变量描述属性,定义方法描述行为。
对象Object
对象是类的一个具体实例,是类的具体表现。
定义类和对象
类的创建写法:
[修饰符] class 类名(){
//属性,定义变量
//行为,定义方法
}
创建对象:
类名 对象名 = new 构造方法(参数);
类中属性的访问:
对象名.属性;
类中方法的调用:
对象名.方法名();
三、构造方法
是一种特殊的方法,方法名和类名一致,没有返回值部分
[访问修饰符] 类名(){
}
四、面向对象的三大特性
封装
使用private关键字对属性进行修饰,可以防止除自身类之外的地方对该属性进行访问。这样可以保护关键属性,隐藏类内部的实现细节,再对外提供一组公开的get/set方法用于对该属性的赋值和读取
继承
1.继承(extends):子类继承父类的属性和行为。子类中也可以重写父类中的方法,从而达到更新的目的。
定义格式:
class 父类{
}
class 子类 extends 父类{
//@Override
}
2.继承(implements):类与接口的关系为实现关系,即类实现接口,该类可以称为接口的实现类,也可以称为接口的子类。实现的动作类似继承,格式相仿,只是关键字不同,实现使用 implements 关键字。
接口:
public interface animal{
public abstract eat();
public abstract sleep();}
实现类:
public class dog implements animal{
public void eat(){
System.out.prinln("嘿嘿");
}
public void sleep(){
System.out.println("哈哈");
}
多态
必须在继承关系中
子类的对象保存在父类的变量中(也称为向上转型)
子类通常会重写父类的方法
总结
在需要父类对象时,将子类对象当做父类对象使用。
这时父类对象调用的是子类重写后的方法,不能调用子类中父类没有的方法。
五、关键字
1.final关键字:final关键字主要用在三个地方:变量、方法、类。对于一个final变量,如果是基本数据类型的变量,则其数值一旦在初始化之后便不能更改;如果是引用类型的变量,则在对其初始化之后便不能再让其指向另一个对象。当用final修饰一个类时,表明这个类不能被继承。final类中的所有成员方法都会被隐式地指定为final方法。
2.this关键字:this关键字用于引用类的当前实例。
3.static关键字:修饰成员变量或成员方法。静态代码块,静态内部类
4.super关键字:super关键字用于从子类访问父类的变量和方法。