华清远见-重庆中心-JAVA面向对象阶段技术总结

面向对象的过程和面向对象的编程思想

面向过程编程

Procedure Oriented Programming 简称POP。

是一种基本的编程思想,是将一件事按流程逐步实现。

这种思想强调事情完成的过程,分析步骤写出相应的代码。

如猜数游戏,每一个步骤都是能按顺序用代码描述出来,逻辑清晰。

但如果逻辑复杂,如xxx管理系统,则无法使用POP的思想实现。

C语言就是一门标志性的面向过程编程语言。

Java基础部分写的所有代码,都是面向过程的,都是一步步按流程执行。

注意:

  • 面向过程POP:所有步骤依次执行,注重执行的细节。

面向对象编程 

Object Oriented Programming 简称OOP。

是当主流的编程思想,是创建解决问题的对象,赋予对象对应的行为和特征,让这些对象互相配合(调用 对象的方法)完成。

这种思想致力于将计算机中的世界,描述的和现实中一致的思想。

注意:

  • 面向对象OOP:创建解决问题的对象,让各个对象调用各自的方法而配合完成。
  • 在面向对象编程OOP中,给类中定义的方法,具体的实现过程,其实也是面向过程的。

总结: 

面向过程:亲力亲为,侧重于分析完成事情的过程。

面向对象:所有事情交给相应的对象完成,侧重于如何创建解决问题的对象。

 

class对象(Object) 和类(Class)

类和对象的关系:

对象是类的具体表现,类是对象的集合(模板)。

如包饺子的模具就是一个类,每次用这个模具包出来的饺子都是一个一个对象。

先定义类,才能通过该类创建对象。

对象是类的一个实例,是类的具体表现。

如何创建对象:类名  对象名 = new 构造方法([参数]) 

创建的对象可以通过 " . " 操作符访问类中的非私有属性和方法。

代码演示:

/*
 * 创建工厂类(程序入口),该类可以创建车的对象
 * */
public class Factory {
    public static void main(String[] args) {
//类名 对象名 = new 类名([参数]);
//创建车类的对象c1
        Car c1 = new Car();
//给对象的属性赋值
        c1.brand = "宝马";
        c1.color = "白色";
        System.out.println("车名:" + c1.brand + ",颜色:" + c1.color + ",座位数:"
                + c1.seat);
        c1.go();
        c1.fly();
        c1.stop();
        Car c2 = new Car();
        c2.brand = "五菱宏光";
        c2.color = "黑色";
        c2.seat = 7;
        System.out.println("我有一辆" + c2.seat + "座的" + c2.color + c2.brand);
    }
}

 成员变量和局部变量

成员变量:定义在类中的变量,称为成员变量,拥有默认值。

代码演示:

public class Car{
    String brand;//这就是一个成员变量,默认值为null
    void info(){
//这里brand虽然没有赋值,但是它是一个成员变量,属于引用类型,默认值为null
        System.out.println("车名:"+brand);//如果不赋值,最终打印"车名:null"
    }
}

局部变量:定义在方法中的变量,称为局部变量。默认有默认值,赋值后才能使用。

代码演示:

public class Test{
    public static void main(String[] args){
//这里的num和name就是一个局部变量,没有默认值
        int num;
        System.out.println(num);//这里无法通过编译,因为num没有赋值
        String name="小明";
        System.out.println(name);//这样才能正常输出
    }
    void sayHello(){
//这里的name也是一个局部变量
        String name;
        System.out.println(name);//这时也无法通过编译
    }
}

面向对象的三大特性

一、封装

使用private关键字对属性进行修饰,再对外提供一组公开的get/set方法用于对该属性读取或赋值

可以防止除自身类之外的地方对该属性就行访问

这样做可以保护关键属性,隐藏类内部的实现细节

二、继承

类A可以通过extends关键字继承类B

语法:class类A extends类B{}

类A称为子类、派生类、衍生类、SubClass

类B称为父类、超类、superClass

继承后,子类可以访问父类中非私有(没有被private修饰的内容)属性和方法

不同的子类中如果有相同的代码,都可以把它们提出来保存到父类中,从而减少子类中的代码冗余

如狗类、猫类都有类型、昵称等属性,也有吃、睡等方法,那么就可以定义一个动物,将这些公共的属性和方法定义在动物类中,让猫类和狗类继承动物类

三、多态

在继承关系中,子类的对象可以保存到父类的变量中。

多态通常应用于定义方法时,形参为一个父类或接口类型变量,实参可以是子类对象。

无法通过父类变量调用子类独有的方法,如果调用重写了父类的方法时,执行重写后的内容。

访问修饰符

final:用于修饰属性、方法和类。

修饰属性:变量变为常量,不能改变其中的值。

修饰方法:方法成为最终方法,不能重写。

修饰类:类成为最终类,不能被继承。

abstract:

用于修饰类和方法,表示抽象的。

修饰方法,方法成为抽象方法,没有方法体,同时该方法的所在类也一定要用abstract修饰,让其成为抽象类。

抽象方法只能出现在抽象类中,不能出现在普通类中。

抽象类中可以没有抽象方法。

抽象类中有构造方法,但该构造方法只会在new抽象类的子类对象时会自动调用,抽象类不能创建 自身对象。

抽象类通常需要被继承,一旦有子类继承了抽象类,就必须要重写抽象类中的所有抽象方法。

 interface:

用于定义接口的关键字,代替class。

如果某个抽象类中全都是抽象方法时,可以将这个类改为接口。

接口是一个完全抽象类,其中的方法都是public abstract修饰的抽象方法,没有方法体,其中的属 性都是public final static修饰的静态常量。

接口中没有构造方法,不能创建对象。

接口通过implements实现,实现它的类称为该接口的实现类。

一个类可以同时实现多个接口。

一个类实现了接口后,必须重写其中的抽象方法。

JDK1.8后,可以在接口中定义default方法和static方法,该方法不用重写。

static:

可以修饰方法、属性或代码块。

被修饰的内容称为静态成员。

静态成员在类加载时就会保存到内存中,所以访问静态成员时,无需对象,直接通过类名即可访问。

当某个属性或方法被高度重用时,可以将其定义为静态的,之后通过类名调用。

还可以在类中定义静态代码块static{},在类加载时自动执行的代码块。

静态方法中无法使用非静态成员

普通方法中可以使用静态成员

总结:

1、面向对象适合在大型系统里编程开发,不同的人可以不同分工,最后程序系统进行组装。

2、面向对象可以实现非常复杂的数学运算,有很复杂的运算,数据处理,统计分析的场合,普通逻辑编程非常困难。

3、面向对象适合流程工艺并不是非常明确,有可能有巨大调整改动的场合,功能块独立调整起来更容易。

4、面向对象适合非常复杂的控制里面,有很多属性抽象的概念参与控制的场合

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值