java面向对象(中级)

面向对象中级部分包括以下这些部分:
在这里插入图片描述

包的本质是创建不同的文件夹或者是类来可以保存同名的类。

基本语法

package com.包名;

包的命名: 只能包含数字、下划线、校园地、字母, 不能是数字开头,不能是保留字。 一般是公司名.项目名.义务模块名。 com.sina.crm.urser.

访问修饰符

4种不同的访问修饰符.

访问级别访问修饰符同类同包子类不同包
公开public
受保护proteccted不是
默认不是不是
私有private不是不是不是

封装

数据在内部被保护,只能通过成员方法来访问。也简化了他人的使用。

好处

  1. 隐藏实现细节
  2. 对数据验证,保证安全和合理

实现

  1. 属性要被private修饰
  2. 提供一个公共的public方法,一般名为set,用于对成员属性的判断并赋值
  3. 提供一个公共的get方法,用于获取属性的值。公共的set方法在设置属性的值
  4. 可以与构造器结合的方式,在构造器中调用成员方法来约束和规范输入的成员属性

继承

  1. 有些类会有相同的部分,比如学生都会有名字年龄属性,都会有考试 ,学习方法。

  2. 当多个类存在如上情况时,可以抽象出父类,在父类中可以定义这些相同的属性和方法。

  3. 所有的子类不需要重新定义父类的方法。用extends关键字继承父类。

  4. 父类也叫基类、超类,子类也叫派生类。子类也可以被另一个子类继承。

  5. 子类会拥有父类的属性和方法

基本语法

class 子类名称 extends 父类名称{
}

注意点

  1. 子类必须调用父类的构造器,完成父类的初始化
  2. 默认调用父类无参构造器,如果没有, 利用super();在子类中调用有参构造器,
  3. super 必须放在构造器第一行
  4. super() this()只能放在第一行,两个方法不能共存

子类查找关系

在类初始化时, 需要注意 在方法区中类初始化子类时,会一直追溯父类直到Object类停止。
然后就是正常的对象初始化程序

super关键字 注意事项

  1. 不能访问父类的私有属性
  2. 不能访问父类的私有方法
  3. 放在第一行
  4. 好处 :分工明确:1. 子类初始化子类的,父类初始化父类的。 2. 子类如有方法与父类重名为了访问父类方法有super。3. 傅佩荣可以访问更上级的父类。

super和this的比较

区别thissuper
访问属性可访问本类属性,若没找到,则在父类中寻找从父类开始查找
调用方法访问本类方法,若没有此方法,在父类中寻找从父类方法中开始查找
调用构造器本类构造器,放首行父类构造器,放首行
特殊表示当前对象子类访问的父类对象

重写/覆盖

  1. 子类的形参列表,方法名称要和父类的形参列表,方法名称一致
  2. 子类的返回类型要和父类的返回类型一致,或者时父类返回类型的子类,例如 父类返回Object,子类可返回String
  3. 子类不饿能缩小父类的访问权限

重写和重载的比较

名称范围方法名形参列表返回类型修饰符
重载本类必须一样必须不同不相关不相关
重写父类和子类必须一样相同返回类型相同,或者父类的返回类型是子类的父类子类方法不能缩小父类方法的访问范围

多态

多态建立在封装和继承的基础之上。方法重写和重载都可以体现多态。

对象多态

  1. 一个对象的编译类型和运行类型可以不一致。
  2. 编译类型在定义是已经确定
  3. 运行类型可以变化
  4. 编译类型 对象名 = new 运行类型
  5. 前提两个对象存在继承关系

多态向上转型

  1. 本质是父类的引用指向子类的对象
  2. 语法: 父类类型 对象名 = new 子类类型();
  3. 可以调用父类中的所有成员,不包括私有类型,不能调用子类的特有成员。因为在编译过程中,编译类型是父类类型,父类类型不具备子类类型的成员

多态向下转型

  1. 语法: 子类类型 对象名 = (子类类型) 父类引用;
  2. 只能强转父类的引用,不能强父类的对象
  3. 要求父类的引用必须指向当前目标类型的对象
  4. 当向下转型后可以调用子类的所有成员

instanceOf 比较操作符,可以判断对象的运行类型是否为 输入对象的类型或子类类型

动态绑定机制

  1. 当调用对象的方法是,该对象回合该对象的内存地址/运行类型绑定,就是说会找运行类型的方法,等号右侧的方法。
  2. 当调用对象的属性是,没用动态绑定机制,看申明的类型就是编译类型的属性

object 类

== 和 equals方法

==是 比较运算符, 如果判断是基本类型,判断值是否相等。如果判断应用类型,看地址是否相等
equals 是object类中的方法,只能用在判断引用类型。默认地址是否相等,子类中往往重写。

光标放在方法位置 按CTRL+b可查看源码。

简要了解object类的三个方法 hashcode finalize和 toString

hashcode

返回对象的哈希码值。两个引用,指向同一个对象哈希值相同。

toString

返回全类名@哈希值十六进制表示,直接输出对象是toString默认被调用。

finalize

当对象被回收时,系统自动调用finalize方法 做一些释放资源的操作。当某个对象没有任何引用时会被调用。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值