ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

7-面向对象编程

2022-05-10 03:00:20  阅读:182  来源: 互联网

标签:Java 构造方法 继承 子类 static 面向对象编程 父类


面向对象编程

 

什么是面向对象

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

  • 三大特性:封装、继承、多态

  • 从代码运行角度考虑是先有类后有对象 (类是对象的模板)

  • 类是一种抽象的数据类型,它是对某一类事物整体描述(定义),但是不能代表某一个具体事物

 

创建与初始化对象

  • 使用 new 关键字创建对象

    (除了分配内存空间之外,还会给创建好的对象进行默认的初始化以及对类中构造器的调用

  • 类中的构造器也称为构造方法,是在进行创建对象的时候必须要调用的,并且构造器有以下特点:

    1. 必须和类的名字相同

    2. 必须没有返回值

    3. new 的本质是在调用构造方法(初始化对象值)

    4. IDEA中生成构造器快捷键:alt + insert

 

重写

图片34

图片35

静态方法是类的方法,非静态方法是对象的方法,当父类子类有函数名和变量都相同的函数如上图:

  1. 有 static 时,b 调用了B类的方法,因为 b 是用B类定义的,没有 static 时, b 调用的是对象的方法,而 b 是用A类 new 的

  2. 没 static 时,直接执行子类的方法

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

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

为什么需要重写?
父类功能,子类不一定需要,或者不一定满足
   
以下方法不能重写,也无多态:
   1.static 方法:属于类,它不属于实例
   2.final 常量
   3.private方法

 

封装、继承、多态

  • 封装:属性私有,使用 get/set 来读取改写

  • 继承(final 类无法继承)

    • 子类(派生类)继承父类(基类),会把公有的方法(public)也继承过来,关键字 extends

    • 在Java中,所有的类都默认直接或间接继承 Object 类

    • IDEA查看当前类的继承关系快捷:ctrl + h

    • Java中只有单继承,没有多继承 (一个子类只能继承一个父类,而一个父类可以有多个子类)

  • 多态(同一方法可以根据发送对象不同而采取多种不同的行为方式)

    • 多态是方法的多态,属性没有多态

    • 新建对象时,父类和子类必须有联系,不然会类型转换异常——ClassCastException!

      Person s1 = new Student();
      其中 Person 是 Student 的父类
    • 存在条件:有继承关系,子类重写父类方法,父类引用指向子类对象

    • 一个对象的实际类型 是确定的,但可以指向对象的引用的类型有很多

    图片36

     

static

public class Person {
  //2.赋初始值
  {
      System.out.println("匿名代码块");
  }

  //1.静态代码块只执行一次
  static {
      System.out.println("静态代码块");
  }

  //3.
  public Person() {
      System.out.println("构造方法");
  }

  public static void main(String[] args) {
      Person person1 = new Person();
      System.out.println("=====================");
      Person person2 = new Person();
  }
  /*
  1.执行 main 方法可见静态代码只在类加载时候加载一次
  2.匿名代码块会在每次新建对象时候构造方法运行前执行一次
    */
}
//静态导入包,直接导入包中的方法(用static),可直接在本类中使用
import static java.lang.Math.random;
import static java.lang.Math.PI;

public class Test {
  public static void main(String[] args) {
      System.out.println(random());
      System.out.println(PI);
  }
}

 

抽象类

【狂神说Java】Java零基础学习视频通俗易懂哔哩哔哩bilibili

接口的定义与实现

【狂神说Java】Java零基础学习视频通俗易懂哔哩哔哩bilibili

N种内部类

【狂神说Java】Java零基础学习视频通俗易懂哔哩哔哩bilibili

 

 

 

super注意点:
1.super 用于调用父类的构造方法,必须在构造方法的第一个
2.super 必须只能出现在子类的方法或者构造方法中
3.super和this不能同时调用构造方法,因为this调用构造方法时候也必须在第一个


this:代表本身调用的这个对象,没有继承也可以使用
super:代表父类对象的引用,只能在继承条件下使用

this():本类的构造
super():父类的构造

标签:Java,构造方法,继承,子类,static,面向对象编程,父类
来源: https://www.cnblogs.com/zhazhaxuan/p/16251932.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有