首页 > 其他分享 >面向对象

面向对象

时间:2022-11-09 20:58:10浏览次数:35  
标签:构造方法 子类 面向对象 static 父类 super

面向对象

面向对象

面向过程 & 面向对象

面向过程思想

  • 步骤清晰简单,第一步做什么,第二步做什么。。。。
  • 面对过程适合处理一些较为简单的问题

面向对象思想

  • 物以类聚,分类的的思维模式,思考问题首先会解决问题需要哪些分类,然后对这些分类进行单独思考。最后,才对某个分类下的戏界进行面向过程的思索。
  • 面向对象适合处理复杂的问题,适合处理需要多人合作的问题!

总结

  • 对于描述复杂的事物,为了从宏观上把握、从整体商合理分析,我们需要使用面向对象的思路来分析整个系统。但是,具体到微观操作,仍然需要面向过程的思路去处理

什么是面向对象

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

三大特性

  • 封装
  • 继承
  • 多态

方法的调用

有无static的区别

有static为静态方法,可以用 类名.方法名直接调用

无static为非静态方法,只能先创建一个实例化对象,再用 对象.方法名调用

构造器

  • 使用new关键字创建对象 快捷键:Alt+Enter

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

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

    • 必须和类的名字相同
    • 必须没有返回值类型,也不能写void
  • new关键字的本质就是在调用构造方法

  • 构造器作用就是初始化对象的值

  • 注意:定义了有参构造之后,如果想使用无参构造,线是的定义一个无参的构造

  • 快捷键:Alt+Insert

封装

  • 该露的露,该藏的藏

    • 我们程序设计要追求“高内聚,低耦合”。高内聚就是类的内部数据操作细节自己完成,不允许外部干涉;低耦合:仅暴露少量的方法给外部使用
  • 封装的好处:

    • 提高程序的安全性,保护数据

    • 隐藏代码的实现细节

    • 统一接口

    • 系统可维护性增加了

      public void setAge(int age){
          this.age = age;
      }
      
      public int getAge(){
          return age;
      }
      

继承

  • 继承的本质是对某一批类的抽象,从而实现对现实世界更好的建模
  • extends的意思是“扩展”,子类是是父类的扩展
  • Java中类只有单继承,没有多继承
  • 继承关系的两个类,一个为子类,一个为父类。子类继承父类,使用关键字extends表示

super关键字

  • super注意点:
    • super调用父类的构造方法,必须在构造方法的第一个
    • super必须只能出现在子类的方法或者构造方法中
    • super和this不能同时调用构造方法
  • super和this比较:
    • 代表的对象不同:
      • this:本身调用者这个对象
      • super:代表父类对象的应用
    • 前提不同:
      • this:没有继承也可以使用
      • super:只能在继承条件下才可以使用
    • 构造方法不同:
      • this():本类的构造
      • super():父类的构造

重写

子类的方法和父类的方法必须要一致,方法体不同

  • 方法名必须相同

  • 参数列表必须相同

  • 修饰符:范围可以扩大但不能缩小

  • 抛出的异常范围可以被缩小,但不能扩大

  • 为什么需要重写:

    • 父类的功能子类不一定需要,或者不一定满足

多态

  • 即同意方法可以根据发送对象的不同而采用多种不同的行为方式

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

  • 注意事项:

    • 多态是方法的多态,属性没有多态
    • 父类和子类,有联系 若没有关系强行转换则会报错:类型转换异常 ClassCastException
    • 存在条件:继承关系,方法需要重写,父类的引用指向子类对象

static关键字

  1. 加入static的变量即为静态变量,没加为非静态变量

    private static int age;//可以直接调用
    private double score;//必须先实例出对象,在调用
    
  2. 加入static的方法即为静态方法,没加为非静态方法

  3. 加入static的代码块即为静态代码块,没加为匿名代码块

    package oop;
    
    public class Demo01 {
        {
            System.out.println("匿名代码块");
        }
    
        static {
            System.out.println("静态代码块");
        }
    
        public Demo01() {
            System.out.println("构造方法");
        }
    
        public static void main(String[] args) {
            Demo01 d1 = new Demo01();
            System.out.println("=============================");
            Demo01 d2 = new Demo01();
        }
    

    静态代码块在实例化对象后最先执行,只执行一次,然后为匿名代码块,最后再执行构造方法

    结果:

    静态代码块
    匿名代码块
    构造方法
    ================================
    匿名代码块
    构造方法
    
  4. 静态导入包

    import static java.lang.Math.random;
    

抽象类

  • 加入abstract变为抽象类
    1. 不能new这个抽象类,只能靠子类去实现它 起到约束作用
    2. 抽象类中可以写普通的方法
    3. 抽象方法必须在抽象类中

接口

  • 接口就是规范,定义的是一组规则,体现了现实世界中“如果你是。。。则必须能。。。。”的思想。
  • 接口的本质是契约就像人的法律一样。制定好然后大家遵守
  • 声明接口的关键字是interface
  • 接口的作用:
    • 约束作用
    • 定义一些方法,让不同的人实现
    • 在接口中,所有定义的方法都是抽象的 public abstract ,所有常量的定义都是静态的 public static final
    • 接口不能被实例化,接口中没有构造方法
    • implements可以实现多个接口
    • 必须要重写接口中的方法

标签:构造方法,子类,面向对象,static,父类,super
From: https://www.cnblogs.com/jiangwang-jzh/p/16875131.html

相关文章

  • Python阶段性总结:面向对象之选课系统需求分析及目录搭建
    目录面向对象之选课系统一、选课系统需求分析二、功能提炼三、选课系统架构设计四、选课系统目录搭建五、选课系统功能搭建面向对象之选课系统一、选课系统需求分析1、......
  • 尚硅谷java零基础教程面向对象(中)239p-273p(2022.3.11)
    239每天一考1.构造器的作用是创建对象,初始化对象的结构2.类的属性的赋值,有几种赋值的方法,谈谈赋值的先后顺序默认初始化--显式初始化--构造器中初始化--对象.方法或对象.属......
  • Java基础---面向对象编程
    什么是面向对象?1.面向过程思想答:线性过程第一步做什么第二步做什么2.面向对象思想答:物以类聚有,分类的思维模式,思考问题首先解决问题需要哪些分类,然后对这些分类进行......
  • 面向对象
    目录一、面向对象的魔法方法二、魔法方法笔试题三、元类1、元类简介1.元类定义推导2.元类介绍2、创建元类的两种方式方式一:方式二:3、元类定制类的产生行为4、元类定制对......
  • 面向对象(部分讲解)
    面向对象的魔法方法魔法方法:类中定义的双下方法都称为魔法方法特点:调用时不需要人为调用,只要在特定条件下就会自动触发运行.例如:双下init创建空对象之后自动触发给......
  • 面向对象4
    面向对象4目录面向对象4面向对象的魔法方法1.魔法方法的介绍2.魔法方法的学习基于魔法方法的面试题元类简介创建类的两种方式元类定制类的产生行为元类定制对象的产生行为......
  • 面向对象高级
    目录面向对象高级今日内容概要今日内容详细面向对象的魔法方法魔法方法笔试题元类简介创建类的两种方式元类定制类的产生行为元类定制对象的产生行为魔法方法之双下new设计......
  • 面向对象魔法方法、元类
    1.面向对象的魔法方法魔法方法:类中定义的双下方法都称为魔法方法使用方法:不需要认为调用,在特定条件下自动触发运行eg:__init__是创建对象之后自动触发给对象添加独有......
  • 面向对象的魔法方法及元类
    魔法方法 类中定义的双下方法都可以叫做魔法方法,其特定情况下可以自动触发运行1.__init__对象添加独有数据的时候自动触发2.__str__对象执行打印操作时自动触发......
  • Python——面向对象(魔法方法、元类)
    Python——面向对象(魔法方法、元类)魔法方法'''魔法方法: 类中定义的双下方法都称为魔法方法 不需要人为调用在特定的条件下回自动触发运行 eg:__init__创建空......