java基础---面向对象入门

10.31

面向对象 & 面向过程

  • 面向过程:

    • 步骤简单,第一步做什么,第二步做什么······
    • 适合处理一些简单的问题
  • 面向对象

    • 物以类聚,分类 的思想,对于一个问题从整体上合理分析,需要哪些分类
    • 适合处理复杂的问题,处理多人协作问题

    具体到微观操作,需要面向对象——>面向过程

面向对象

  • 本质:以类的方式组织代码,以对象的形式封装数据
  • 三大特性:封装,继承,多态

实例化

调用类有两个方法

  • 给被调用类加static,使它成为静态方法(类方法),可以直接被调用
  • 实例化这个类 new

构造器/构造方法/构造函数

作用:创建对象的时候,给成员变量赋值

//如果我们没有写任何构造方法,那么虚拟机会自动给我们加一个空参的构造方法
    //空参构造方法格式如下
    /*
    注意事项:构造方法的方法名与类名一致
            没有返回值类型,连void也没有
            创建对象的时候虚拟机调用,不能手动调用构造方法
            每创建一次对象(new),就会调用一次构造方法         
             public Student(){

         
    }

在这里插入图片描述

属性的默认初始化

数字:0

char:u0000

boolean:false

其他引用类型:null

封装

  • 程序设计要追求:“高内聚,低耦合”。高内聚就是类的内部数据操作细节自己完成,不允许外部干涉;低耦合就是仅暴露少量方法给外部用
  • 作用:
    • 提高程序的安全性,保护数据
    • 隐藏代码的实现细节
    • 统一接口(get(),set())
    • 提高系统可维护性

继承

super注意点

  • super调用父类的构造方法,必须在构造方法的第一行
  • super只能出现在子类的方法中
  • super和this不能同时使用

重写

  • 方法名必须相同,参数列表必须相同,方法体不同

  • 父类方法修饰符是private,子类重写方法不能是public

    public>protected>default>private

  • 抛出的异常,可以缩小,不能扩大

    ClassNotFoungException(小) Exception(大)

  • 子类重写父类方法,相当于覆盖 了父类方法,当调用父类方法时,输出结果是子类的方法体

  • 为什么要重写:父类的功能,子类不一定需要,或者不够用

  • 无法重写:static,final,private修饰的

多态

定义:同一方法可以根据发送对象的不同而采用多种不同的行为方式;一个对象的实际类型是确定的,但是引用类型可以有很多

  • 父类的引用指向子类 Person s2=new Student();

  • 父类不能调用子类独有的方法

  • 多态是方法的多态,属性无多态

  • 多态的存在条件:继承关系,方法重写(如果不重写,则各自调用各自方法,就没必要多态),父类的引用指向子类

  • 多态调用成员的特点

    1. 调用成员变量的特点:编译看左边,运行看左边
    2. 调用成员方法的特点,编译看左边,运行看右边(子类重写后会覆盖父类方法)
      在这里插入图片描述
  • 多态的好处

    • 在多态形式下,右边对象可以实现解耦合(模块间的耦合度是指模块之间的依赖关系,依赖越高,耦合度越低),即减少模块之间的依赖性,提高程序的独立性。便于扩展和维护
    • 定义方法的时候,使用父类型作为参数,可以接收所有子类对象,便利(教务系统登录类,参数填Person,则可以传Student,Teacher,)
  • 多态弊端:

    • 无法调用子类独有方法,因为调用方法时,编译看左边,即父类,没有则编译报错

    • 解决方案:强制类型转换,将父类转换成子类对象 zi d=(zi) fu;

      类型转换异常(ClassCastException),必须有关系(父子类)才能多态,Person是Student的父类,所以可以Person s2=new Student(); String s2=new Student()是不行的!

      • 转换的时候用instanceof关键字进行判断

      11.1

static

  • 静态方法中只能访问静态变量或者静态方法(想要访问非静态,则需要用this指出哪一个,而静态方法中没有this)
  • 非静态(与对象有关)方法可以访问所有
  • 静态方法中没有this关键字(静态方法是共享的,与某个对象无关,不需要this关键字)

抽象类和抽象方法

抽象类的作用是什么

抽取共性的时候,无法确定方法体,就把方法定义为抽象的

强制子类按照这种方法重写

  • 抽象类不能创建对象(实例化)
  • 抽象类中不一定有抽象方法,有抽象方法的类一定是抽象类
  • 可以有构造方法
  • 抽象类的子类
    • 要么重写抽象类中的所有抽象方法
    • 要么也是抽象类(则由子子类重写)

接口

接口中成员的特点

  • 成员变量:只能是常量,默认修饰符:public static final。(接口就是规则,不需要变化)
  • 构造方法:没有
  • 成员方法:只能是抽象方法,默认修饰符:public abstract

接口和类的关系

  • 类与类:继承关系,只能单继承
  • 类与接口:实现关系,可以多实现,还可以在继承一个类的同时实现多个接口
  • 接口和接口:继承关系,可以单继承也可以多继承
    • 如果实现类实现了最下面的子接口,那么就需要重写所有的抽象方法(inter3继承了inter2和inter1,则inter3的实现类就需要重写所有的抽象方法)

内部类

  • 写在一个类里面的类就是内部类
  • B类表示的事物是A类的一部分,且B类单独存在无意义,比如,汽车类的发动机类
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值