面向对象概念和三大特性

本文介绍了面向对象编程的基本概念,包括面向对象的编程思想、类与对象的关系、类的组成、构造方法、封装、继承和多态。通过实例详细阐述了如何在Java中创建和使用对象,以及this和super关键字的用途。此外,还讨论了Java中的final关键字和访问修饰符,以及方法覆盖和多态的实现。
摘要由CSDN通过智能技术生成

面向对象概念

面向对象

编程思想

概念:建立解决问题的思路,即编程思想

常见的编程思想

  1. 面向过程: 自顶向下,逐步求精,注重解决问题的过程,将解决问题分为一个一个的步骤,只要按照步骤执行就一定能解决问题

  2. 面向对象: 分析解决问题需要的哪些功能,而哪些对象具有这种功能;注重对象之间的配合调用

问题: 回家

面向过程: 拿着地图,分析回家需要经过哪些路口,每条路上走多远,遇到路口往哪儿拐,一步一步就走到家了

面向对象:只需要调用出租车(对象)的载客功能,由出租车送我们回家

注意:面向对象与面向过程并不是完全对立!面向对象是在面向过程的基础上实现的

面向对象

认识对象

什么是对象?

Java眼中的对象: 一切客观存在的事物都是对象!世界就是由对象组成的!—万物皆对象

例如:水杯、桌子、电脑、空气、错误等等都是对象

程序中的对象: 内存中的一块存储空间,用来存储对现实对象的关注的部分,从而代表现实中的对象

  • 对象的组成:

    • 特征(属性): 有什么

    • 行为(方法): 干什么

    注意:有时候,一个对象的属性可能也是一个对象;对象的调用者可能也是一个对象
    例如:硬盘是电脑的属性,硬盘本身也是对象;程序员使用电脑开发,程序员也是对象

  • 对象间的关系

    • 一个对象继承了另一个对象 is a 例如:狗是一个动物

    • 小对象组成大对象 has a 例如:电脑由硬盘、cpu组成

    • 一个对象使用另一个对象 use a 例如:程序员使用电脑

认识类

类与对象的关系
  1. 类是对象的模板,对象是类的实例

  2. 类是人们对一系列相同相似事物(现实中的对象)的认识,抽取出共性定义在类中

  3. 对象就是根据类创建出来的实例,类似于根据模板生产物品

  4. 类由属性与方法组成

例如: Computer类 ------》电脑对象

类的组成
  1. 属性: 有什么 成员变量\实例变量

    位置: 类的内部,方法的外部

    语法:

    1. 声明属性: 数据类型 属性名;    例如:String name;
    2. 声明并初始化: 数据类型 属性名 = 值;  例如: int age = 18;

      错误语法: 先声明,再赋值
      例如: double score;
      score = 100;//错误语法!!

      class Student{
      String name;
      int age = 18;
      double score;
      //score = 100;错误
      }

    属性具有默认值:即属性的数据类型的默认值!

    属性的作用范围:至少为整个类的内部

    注意:当属性与局部变量命名冲突,局部变量优先!

    补充:局部变量与属性的区别

    局部变量 属性
    位置 定义在函数(方法)内部 类的内部,方法的外部
    默认值 没有默认值 具有默认值
    作用范围 从定义的那一行开始,到定义所在代码块的结束 至少整个类的内部
    命名冲突 作用范围重合内,不允许命名重复 当属性与局部变量命名冲突,局部变量优先
  2. 方法: 干什么 成员方法 对象的具体的行为:吃喝拉撒睡、工作、学习、玩耍、等等

    位置: 类的内部,其他方法的外部

    语法:

    修饰符 返回值类型 方法名(形参列表){
    //方法实现
    }
    注意:函数是特殊的方法!函数声明中需要写上static修饰符;而方法一般不写static

    class Student{
    String name = “小郭”;
    int age = 18;
    double score;
    //score = 100;错误

    public void study(){
    //局部变量优先!
    //String name = “小红”;
    System.out.println(name+“沉迷学习无法自拔”);
    }
    public void eat(){
    System.out.println(“吃饭饭”);
    }
    public void sleep(){
    System.out.println(“睡觉觉”);
    }
    }

  3. 构造方法: Java规定的具有特殊功能的方法

    作用: 可以用来配合new关键字创建对象,并且可以在创建对象的过程中选择是否为对象属性赋值!

    分类:

    • 无参构造方法 没有形参列表,在创建对象时无法为对象属性赋值;可以在对象创建成功后,通过其他方式赋值

      语法: public 类名(){}

    • 有参构造方法 具有形参列表,在创建对象时可以将形参的值赋值给属性

      语法: public 类名(形参列表){ //赋值语句 }

    注意:

  4. 构造方法的方法名必须和类名相同!

  5. 构造方法没有返回值类型,注意连void都没有

  6. 构造方法无法手动调用,只有在创建对象时被调用一次

  7. 若代码中没有定义任何构造方法,默认提供一个公开无参构造方法

    经验:

  8. 一般的,若类中具有属性,需要提供有参、无参构造方法

  9. 可以定义多个形参个数不同的有参构造方法

    //学生类
    class Student{
    //属性
    String name = “小红”;
    int age = 18;
    double score;
    //score = 100;错误
    //普通的行为方法
    public void study(){
    //局部变量优先!
    //String name = “小郭”;
    System.out.println(name+“沉迷学习无法自拔”);
    }
    public void eat(){
    System.out.println(“吃饭饭”);
    }
    public void sleep(){
    System.out.println(“睡觉觉”);
    }

    //无参构造方法
    public Student(){}
    //具有两个参数的有参构造方法
    public Student(String n,double s){
    name = n;
    score = s;
    }
    //具有三个参数的有参构造方法
    public Student(String n,int a,double s){
    name = n;
    age = a;
    score = s;
    }
    }

思考:普通方法与构造方法的区别?

答: 普通方法是人为定义的一些具体功能、行为方法,例如吃喝拉撒睡、工作学习等等

而构造方法它的作用是Java实先规定好的,是用来创建对象的;它们的关系就好像主函数与普通函数的关系

java中常见类的使用
  1. Math    常见数学函数

  2. Arrays 操作数组的工具类,toString,sort方法

  3. Random 随机数,种子的概念

  4. String,Integer 查看内部状态,与相应的方法

  5. ArrayList 可以代替数组

创建对象

创建对象的方式:

创建对象的过程称为实例化,对象的属性和方法称为实例(instance)成员

  1. 通过无参构造方法创建对象

    语法: 类名 引用 = new 类名(); 例如:Student s1 = new Student();

  2. 通过有参构造方法创建对象

    语法: 类名 引用 = new 类名(实参列表); 例如:Student s2 = new Student(“小郭”,20,80);

使用对象:

  • 使用对象的属性:

    • 通过 引用.属性名; 获取该对象的该属性

    • 通过 引用.属性名 = 值; 完成对该对象的该属性的再次赋值

  • 使用对象的方法:

    • 通过 引用.方法名(实参列表) 调用该对象的该方法

class TestObject{
public static void main(String[] args){
//通过无参构造方法创建对象
Student s1 = new Student();
System.out.println(s1.name+" “+s1.age+” “+s1.score);
s1.study();
s1.score =

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值