Java基础学习之面向对象、继承、接口

类与对象
  • 类声明的对象被称为对象变量,简称对象

  • 局部变量无默认值,成员变量有默认值(boolean——false;byte,short,int,long——0;float,double——0.0;引用型变量——null)

  • 类体由两个部分组成:变量的声明的方法的定义

  • 构造方法

    • 无返回类型
    • 不能用final修饰
    • 不能被继承
    • 不编写,则默认提供一个无参的,编写则不提供
  • 声明对象后该对象为空对象,使用new运算符为其分配内存空间(先为成员变量分配,再执行构造方法中的语句),最终将引用赋值给该对象

  • new标识符只能和类的构造方法进行运输,得到的值是一个引用

  • 一个类声明的两个对象如果具有相同的引用,两者就具有完全相同的变量(实体)

  • 可变参数

    • 这些参数类型必须相同
    • 必须是参数列表的最后一个
  • 实例变量和类变量(static修饰)

    • 实例变量属于对象(只能通过对象访问),类对象既属于对象也属于类(既能通过对象访问,也能通过类名直接访问)
    • 所有对象共享类变量
  • 实例方法和类方法(static修饰)

    • 只有当该类创建对象时,类的实例方法才会被分配入口地址,而且只分配一次
    • 实例方法既可以操作实例变量,也可以操作类变量,既可以调用类中的实例方法,也可以调用类方法(构造方法除外),实例方法只能通过对象调用;类方法不可以操作实例变量,也不可以调用实例方法,只能调用类方法
  • 方法重载

    • 名字相同
    • 参数个数或者类型不同
    • 不考虑返回类型
  • this关键字

    • 不可以在类方法中使用(因为this表示的是某个对象,类方法可以直接通过类名调用,可能该时还没有任何对象产生)
  • import语句必须写在package语句和类的定义之间

  • 访问权限(private,protected,public

    • 类只能有两种访问权限,public和缺省

    • 可以修饰成员变量,不可以修饰局部变量;可以修饰方法(包括构造方法,构造方法的访问权限与类一致)

    • 方法内部变量不能用public,static,private等修饰,只能用final修饰(或者直接不写)

    • public>protected>友好的>private

  • var局部变量

    • 不可以用来声明成员变量,只能在方法体中使用来声明局部变量
    • 声明时必须显式的给出初值,不能为null
子类与继承
  • 单继承
  • 关键字extends
  • 子类父类不在同一个包中,子类继承父类中的非private变量和方法,继承过来访问权限保持不变。
  • 子类父类不在同一个包中,子类只继承父类中的protectedpublic访问权限的方法。(这也体现出了protected和友好访问权限的区别)。
  • 当创建一个子类对象时,子类和父类中都被分配了内存空间,但只是将父类中被子类继承的那一部分成员变量分配给子类。
  • 子类继承的方法只能操作子类继承的成员变量或未继承的成员变量,不能操作子类新声明的变量。
  • 子类继承的方法所操作的成员变量一定是被子类继承或者隐藏的成员变量。(采用super关键字可以操作子类隐藏的成员变量)
  • 方法重写:
    • 类型一致或者是其子类型
    • 方法的名字,参数个数及类型完全相同
    • final方法不能被重写
    • 重写的方法中所操作的成员变量一定是子类新声明的成员变量
    • 不允许降低方法的访问权限,必须大于等于
  • 当子类用构造方法创建一个对象时,子类的构造方法总是先调用父类的某个构造方法。
  • super关键字
    • super调用被隐藏的方法时,该方法中出现的成员变量是被子类隐藏的成员变量或者继承的成员变量
    • 由于子类不继承父类的构造方法,所以在子类中需要用super来调用父类的构造方法,如果没有明显的指出调用哪个构造方法,则默认调用无参的构造方法,而且该语句必须是子类构造方法中头一个语句,并且如果没有显示的写出,则默认有super(),若显式的写出了则不提供默认的super语句。
  • final关键字
    • final类不能被继承
    • final不能修饰构造方法
    • 若父类中有被final修饰的方法,那么该方法只能被子类继承,不能被重写
    • 当修饰成员变量或局部变量时,则为常量,不允许发生变化,而且在声明时指定该值,不提供默认值
  • 上转型对象
    • 普通子类对象和上转型对象访问的变量和方法范围的区别
      • 普通子类对象:继承的变量,新增的变量,继承或重写的方法,新增的方法
      • 上转型对象:隐藏的变量,继承的变量,继承或重写的方法
    • 如果子类重写了父类的某个实例方法,当上转型对象调用这个实例方法时一定是调用了子类重写得实例方法**(静态方法除外,调用的是父类原有的静态方法)**
  • abstract类和abstract方法
    • abstract方法只允许声明,不允许实现
    • 不允许用final修饰一个抽象方法或者抽象类,也不允许用staticprivate修饰一个抽象方法(抽象方法必须是非private的)
    • abstract类中可以有抽象方法也可以有非抽象方法,也可以无抽象方法,且有抽象方法的一定是抽象类
    • abstract类不能使用new标识符创建对象,可通过使其变成该抽象类的一个子类的上转型对象的方法,来调用子类重写的方法
    • abstract类继承abstract类,必须重写父类的abstract方法;abstract类继承abstract类,既可以重写父类中的abstract方法,也可以继承abstract方法
    • 抽象类封装了子类必须要有的行为准则,abstract类只关心操作,而不去关心操作的细节,具体细节由实现类去实现
接口与实现
  • 所有方法都是public abstract的,所有变量都是public final statc的,而且可以省略
  • 接口中可以定义default方法,default不能省略
  • abstract类实现某个接口,那么这个类必须重写该接口的所有abstract方法
  • abstract类实现某个接口,那么这个类既可以重写也可以拥有abstract方法
  • 类实现后,并不拥有static方法和private方法,default方法既可以重写也可以拥有,重写方法不可以省略public
  • 接口也可以被继承,子接口将继承父接口中的全部方法和常量
  • 接口回调
    • 将实现某一个接口创建的对象的引用赋值给接口声明的接口变量
    • 该变量可以调用实现的接口方法,接口提供的default方法以及重写的default方法
    • 接口·无法调用类中其它的非接口方法,只能调用实现的方法
  • 一个接口中只有一个abstract方法称为单接口,也叫函数接口
  • 接口可以抽象出重要的行为准则
  • 如果一个方法的参数是接口类型,就可以将任何实现该接口的类的实例的引用传递给该接口参数
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

老子裤子马

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值