栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

七、面向对象编程【面向对象、类和对象、封装、继承、多态、方法重写、static关键字、抽象类、接口、内部类】

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

七、面向对象编程【面向对象、类和对象、封装、继承、多态、方法重写、static关键字、抽象类、接口、内部类】

面向对象 面向对象与面向过程

什么是面向对象

面向对象的本质就是:以类的方式组织代码,以对象的组织(封装)数据

面向对象的三大特性:继承、封装、多态
从代码的角度,先有类后有对象

方法回顾 静态方法

静态方法可以使用类名进行调用方法

非静态方法

非静态方法,必须使用对象来进行调用

方法调用
  1. 两个普通方法之间可以互相调用
  2. 两个静态方法之间可以互相调用
  3. 静态方法不能调用非静态方法
    (原因:静态方法随着类加载而产生,非静态方法和对象有关,类实例化之后才存在,一个存在的东西调用一个不存在的东西是不可以的)
类和对象 类和对象的关系

类是一种抽象的数据类型,它是对某一类事物整体描述/定义,但是并不能代表某一个具体的事物
对象是抽象概念的具体实例

创建与初始化对象


构造器的作用:

  1. 使用new关键字创建对象,本质是在调用构造器,另一个作用是用于初始化值
  2. 一旦定义了有参构造,如果想使用无参构造,就必须显式定义无参构造函数
创建对象内存分析

封装

程序设计的要求:高内聚,低耦合
封装(数据的隐藏):
应禁止直接访问一个对象中数据的实际表示,而应通过操作接口来访问,这称为信息的隐藏

记住一句话:属性私有;get / set

封装的意义
提高程序的安全性,保护数据
隐藏代码的实现细节
统一接口
系统可维护增加了

继承 注意点
  1. 使用关键字extends
  2. 继承的关系是两个类,一个为子类(派生类),一个为父类,子类继承父类
  3. 子类继承父类,就会拥有父类除私有方法和属性以外的全部方法和属性。
  4. 在java中,所有的类都直接或者间接继承Object类
  5. Java中是单继承,没有多继承
super

注意点

  1. super是调用父类的构造方法,必须在构造方法的第一个
  2. super必须只能出现在子类的方法或者构造方法中
  3. super和this不能同时使用

super VS this

  1. 代表的对象不同【this:本身调用者这个方法;super代表父类对象的引用】
  2. 前提:【this:没有继承也可以使用;super只有在继承条件下才可以使用 】
  3. 构造方法:【this();本类的构造;super();父类的构造】

在继承关系中,调用子类的无参构造方法,默认先调用父类的无参构造方法。如果显示调用,必须写在子类无参构造函数的第一行
父类没有无参构造方法,则子类也没有办法写无参构造函数

子类可以通过super关键字调用父类公有的属性和方法

方法重写

重写都是方法的重写,和属性无关

继承关系中的静态方法,方法的调用只和左侧定义的数据类型有关

继承关系下,公有的非静态方法可以进行方法重写,结果为方法重写后的结果

方法重写:

  1. 需要有继承关系,子类重写父类的方法
  2. 方法名必须相同
  3. 参数列表必须相同
  4. 修饰符:范围可以扩大,但不能缩小 public>protected>default>private
  5. 抛出的异常:范围可以被缩小,但是不能被扩大 ClassNotException() ---->Exception

重写:子类的方法和父类必须一致,方法体不同

为什么需要重写?

  1. 子类不一定需要,或者不一定满足!
多态 什么是多态

是同一个方法因为传入对象不同呈现不同的行为

多态存在的条件
  1. 有继承关系
  2. 父类引用指向子类对象
  3. 子类重写父类的方法
注意
  1. 多态是方法的多态,属性没有多态
  2. 父类和子类有联系,类转换异常 ClassCastException
  3. 多态存在的条件: 有继承关系 有方法的重写 父类引用指向子类对象
不能重写的

static方法属于类,不属于实例
final修饰的是常量不能重写
private修饰的方法,不能重写

instance of 判断一个对象是不是属于这个类

类型转换

1.父类引用指向子类对象
2.把子类转为父类,向上转型,向上转型可能会丢失子类的一些方法
3.把父类转为子类,向下转型,强制转换
4.方便方法的调用,减少重复的代码,简洁

static关键字

静态属性和静态方法可以直接通过类名来进行调用
非静态属性和方法需要通过对象来进行调用
非静态方法可以调用静态方法
静态方法可以调用静态方法,不可以调用非静态方法

抽象类 抽象类的特点
  1. 不能new对象,只能靠子类去实现它,约束!
  2. 抽象类中可以写普通方法
  3. 有抽象方法一定是抽象类,抽象类不一定有抽象方法
  4. 一个类继承了抽象类,要么实现抽象类中全部抽象方法,要么继续为抽象类
问题

1.抽象类存在构造器吗
抽象类中可以有构造器,虽然不能new对象,但是可以让子类使用
2.抽象类存在的意义
将一些代码抽象出来,提高开发效率

接口

1.接口是一种约束
2.定义一些方法,让不同的人实现
3.接口中的方法都是被 public abstract 修饰的
4.接口中的属性都是被 public static final修饰的
5.接口不能被实例化,因为接口中没有构造方法
6.implements可以实现多个接口
7.实现类必须要重写接口中的方法

内部类 成员内部类

成员内部类可以访问外部类的属性和方法(包括公有和私有)

静态内部类


静态内部类只能访问外部类中静态的属性和方法

匿名内部类

没有名字初始化类,不用将实例保存到变量中

局部内部类

局部内部类是在一个类的方法中再定义一个类。
局部内部类要在外部类的成员方法中初始化对象。
在外面初始化外部类对象,使用这个对象调用外部类的成员方法,同时内部类的成员方法也被调用

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/943529.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号