安安静静学JAVA(二)

继承

格式: public class 子类 extends 父类(超类、基类) {}

特点:子类可以继承父类的非私有方法和属性(不继承构造方法)

好处:1.减少代码的冗余,相同代码重复利 用

2.使类与类之间产生关系

注意:继承只能是单继承,不能多继承,但是可以多层继承(一个父类多个子类 is-a)

继承后成员访问特点:

  • 非私有成员

    • 非同名:可以点用父类的非私有成员成员变量
    • 同名:子类有的就调用子类的,子类没有就用父类的,父类都没有就报错
  • 成员方法私有:不可以调用父类私有的方法,可以间接用set/get调用

  • 构造方法:子类不能继承父类的构造方法,但可以根据父类的构造方法生成自己的构造方法

方法重写:

  • 作用:重写父类方法
  • 如何重写:子类重写方法与父类的方法名、参数列表 、返回值相同
  • 注意:子类的权限一定要比父类权限大(public > protected > default > private)
  • @Override注解:在方法上面加上@Override注解可以检测重写是否成功

继承内存图:在每次创建子类对象时,先初始化父类空间,再创建其子类对象本身。目的在于子类对象中包含了其对应的父类空间,便可以包含其父类的成员,如果父类成员非private修饰,则子类可以随意使用父类成员。代码体现在子类的构造方法调用时,一定先调用父类的构造方法。

  • this()和super()注意事项:
    1.this()和super()只能存在构造方法第一条执行语句(两个只能存在一个)
    2.如果父类没有空参构造器,子类调用super()就会报错

this和super关键词

  • super

    • super使用:
      1.super(参数):访问父类的构造方法【常用,但是会自动生成】
      2.super.成员变量:访问父类的成员变量
      3.super.成员方法():访问父类的成员方法
    • super:存储父类对象的引用,可以访问父类的成员变量,成员方法,构造方法
    • super注意事项一:super访问成员变量和成员方法: 优先去父类中找,如果有就直接使用,如果没有就去爷爷类中找,如果有,就用,依次类推…
    • super注意事项二:子类的构造方法默认会调用父类的空参构造方法,如果父类中的没有空参构造方法,只定义了有参构造方法,会编译报错
  • this

    • this使用:
      1.this(参数):访问本类的构造方法
      2.this.成员变量:访问本类的成员变量【常用,但会自动调用】
      3.this.成员方法():访问本来成员方法
    • this:存储当前对象的引用,可以调用本类的成员变量,成员方法,构造方法

抽象类

概述:使用abstract关键词修饰的类就是抽象类

特点:这种类不能被创建对象,它就是用来做父类的,被子类继承的

格式:

抽象方法:

  • 定义格式:
  • 抽象方法定义:抽象方法没有方法体,使用abstract修饰的方法就是抽象方法

注意:

1.抽象类中的抽象方法,子类继承时必须重写
2.抽象类中可以没有抽象方法,但有抽象方法的一定是抽象类(接口)

匿名对象

匿名对象适用于只使用一次的对象时候

设计模式-模板设计模式

针对某些情况,在父类中指定一个模板,然后根据具体情况,在子类中灵活的具体实现该模板

子主题 2

final关键词

定义: final修饰的,自定义常量的命名: 所有字母都大写, 单词和单词之间使用_分开

       idea 大小写切换: ctrl + shift + u

特点:

final修饰的类不能被继承
final修饰的方法不能被重写
final修饰的变量就变成了常量, 它的值不能修改

局部变量:

        声明并赋值
        先声明后赋值(使用前必须赋值)

成员变量:
声明并赋值
先声明后赋值 要求: 必须在构造方法中赋值, 如果有多个构造方法, 每个构造方法都要赋值 (扩展, 也可以在构造代码块中赋值)

注意:如果自定义常量是引用数据类型的话:

        不可以发生改变的是, 对象的地址值
        而对象中的属性值是可以发生改变的

static关键词

定义:static : 静态 => 跟类产生关联

作用:static 可以用来修饰成员变量和成员方法(也可以修饰其他内容, 后面学习)

static修饰的成员变量: 类变量

static修饰的成员方法: 类方法

static修饰的成员变量和成员方法, 随着类的加载而加载, 优先于对象存在

特点:

1. static修饰的成员变量, 被它所在类的所有对象所共享(多线程的时候会使用)
2. static修饰的成员变量和成员方法, 可以使用  类名.变量名  列名.方法名()  方式去调用

注意: 静态只能访问静态

其它

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值