Java面向对象的三个特性

类: 变量、方法(属性)、构造器
类、对象、成员变量、构造器、方法必须通过对象来调用

1.继承

要点

  • 子类继承(extends)父类,继承了父类的所有成员变量和方法–>减少了代码的重复
  • 一个父类可以有多个子类来继承
  • 子类一定有,并且只有一个父类
  • 如果没有定义父类,默认父类为Object
  • 构造器不可以被继承
  • 创建子类对象会先创建父类对象,但是这个对象
  • 子类继承父类,子类的功能比父类更强大
  • 子类构造器会默认调用父类的无参构造器 super()
Animal a = new Dog();

a首先是一个Animal类型的引用,a又是一个Dog类型的对象
编译器:a是Animal类型 -> 编译时类型
JVM:a是Dog类型 -> 运行时类型

2.多态

1.重载:同一个类中,方法名相同,参数不同,和方法返回值类型相同
2.重写:向上造型,运行时执行的是重写过的方法
——父子类中,方法签名和父类方法签名完全一致,返回值类型也要相同
3.向上造型:只能调用父类类型,想调用子类必须强转
——好处:统一类型

3.封装

成员变量属于个人/私有
私有的——private
将成员变量私有化,提供get/set方法——属性

访问控制符+修饰词+类/方法名/变量名

类加载:将类的字节码信息加载到JVM方法区中的过程
类加载时间:(类使用之前)
1.new对象
2.new子类对象,父子类会依次加载
3.调用类的时候就有静态成员变量

访问控制符
  • static:静态的, 和类相关、不需要对象
    1.修饰成员变量
    存储在方法区中,所有这个类的对象公用的,只有一份有类的时候就有静态成员变量
    2.修饰方法
    通过类名调用,不能直接使用普通的
    3.静态代码块
    类加载的时候调用,需要加载大量资源的时候使用
    4.修饰内部类
  • final:最终的,不能别修改的
    1.修饰变量(成员变量/局部变量)
    是常量故不可被修改
    字面量(如:1、2、3.14、true、false、null等)
    使用之前必须初始化
    final成员变量初始化:1.每个构造器中 2.代码块中 3.声明的同时
    2.修饰方法
    不能被子类重写
    3.修饰类
    不能被继承
  • static+final:修饰成员变量——静态的常量,在声明的同时、代码块中初始化
  • abstract:抽象类的意义——被继承——故与final不可同时用
    1.修饰类
    抽象类(可以有抽象方法的类)-> abstract修饰的类
    可以有子类,提供给构造器默认调用
    不能实例化,靠子类来实例化
    final成员变量初始化:1.每个构造器中 2.代码块中 3.声明的同时
    2.修饰方法
    抽象方法:不能实现的方法,不知道具体实现;没有方法体,靠子类来实现/重写
    有抽象方法的类一定是抽象类
  • interface:接口(一个特殊的抽象类)
    没有构造器,不能实例化
    意义:被实现——implements——扩展功能
    方法默认:public abstract
    变量:public static final

类与接口之间的关系

类-类extends 1-1
类-接口implements 1-n
接口-接口extends 1-n
接口-类类无法被接口继承/实现
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值