初识面向对象(oop)
面向过程与面向对象
-
面向过程(具体)
- 步骤清晰简单,第一步做什么,第二步做什么……
- 适合处理简单问题
-
面向对象(抽象)
- 物以类聚,分类的思维模式,思考问题首先会解决问题需要哪些分类,然后对这些分类进行单独思考。最后才对某个分类下的细节进行面向过程的思索
- 面向对象适合处理复杂的问题,适合处理需要多人协作的问题
-
对于描述复杂的事物,为了从宏观上把握,从整体上合理分析,我们需要使用面向对象的思路来分析整个系统。但是,具体到微观操作,仍然需要面向过程的思路去处理
程序中语句太多——>方法—+属性—>类
面向对象
本质
- 以类的方式组织代码,以对象的形式封装数据
三大特性
- 封装:把数据包装起来
- 继承:子类,父类
- 多态:同一事物,表现的形态可能不同
概念
- 从认识论角度考虑是先有对象后有类。对象是具体的事物。类,是抽象的,是对对象的抽象
- 从代码运行角度考虑是先有类后有对象。类是对象的模板
回顾方法及加深
方法的定义
修饰符
返回类型
即使是void类型,也要有return,只不过后面不跟东西
break和return的区别
- break:跳出switch,结束循环
- return:方法结束,返回结果
public void hello(){
return;
System.out.println(1);//无效的表达式
}
return后不能再输入语句,会报错
方法名
- 见名知意
参数列表
- 参数类型
- 参数名
方法的调用
静态方法
- 加static的方法
- 不同类中调用直接 类名.方法名 即可调用
//学生类
public class Student {
//静态方法
public static void say(){
System.out.println("学生说话了");
}
}
public class Demo02 {
public static void main(String[] args) {
Student.say();
}
}
在调用时 类名.方法名 即可调用
输出结果为
public static void main(String[] args) {
int i = Demo03.add(5, 78);
System.out.println(i);
}
public static int add(int a,int b){
return a+b;
}
输出结果为
非静态方法
- 不加static
- 不同类中调用要先实例化
- 调用时 对象名.方法名 即可调用
//学生类
public class Student {
//非静态方法
public void say(){
System.out.println("学生说话了");
}
}
public class Demo02 {
public static void main(String[] args) {
//实例化这个类 new
//对象类型 对象名 = 对象值;
//new Student().say();//new了一个Student的类,并把它其中的方法say调用了出来
Student student = new Student();
student.say();
}
}
在调用时 对象名.方法名 即可调用
public class Demo02 {
public static void main(String[] args) {
//实例化这个类 new
//对象类型 对象名 = 对象值;
//new Student().say();//new了一个Student的类,并把它其中的方法say调用了出来
Student student = new Student();
student.say();
}
//static和类一起加载的
public void a(){
b();
}
//类实例化后才存在
public void b(){
}
}
若一个有static则无法调用
public static void main(String[] args) {
int i = new Demo03().add(5, 78);
System.out.println(i);
}
public int add(int a,int b){
return a+b;
}
输出结果为