Java面向对象进阶第一天

这篇具有很好参考价值的文章主要介绍了Java面向对象进阶第一天。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

面向对象高级第一天

static关键字

是静态的意思,可以修饰成员变量,也可以修饰成员方法

成员变量的分类

  1. 静态成员变量

    • 有static修饰,属于类,与类一起加载,内存中只有一份,可以被共享访问。

    • 什么时候用呢?如果信息要被共享,只需要一份就用静态成员变量,比如:系统在线人数。

    • 访问规则:

      建议用类名访问:类名.静态成员变量

      同一个类中,访问静态成员可以省略类名不写。

      理论上也可以这样访问:对象名.静态成员变量(不推荐)

  1. 实例成员变量

    • 无static修饰,属于对象,每个对象中都存在一份实例成员变量。比如:name age

    • 什么时候用呢?比如:name age,每个对象中都有这些信息,而且信息还不同时,定义成实例成员变量。

    • 访问规则:

                    只能用:对象名.实例成员变量。

成员方法的分类

  1. 静态成员方法

    • 有static修饰,属于类,与类一起加载,可以被共享访问。

    • 什么时候用呢?如果是做一个通用功能,可以用静态成员方法。

    • 访问规则:

      建议用类名访问:类名.静态方法
      注意:同一个类中,访问静态成员可以省略类名不写。
      理论上也可以这样访问:对象名.静态成员方法(不推荐)
    • 静态成员方法的应用:工具类

      是什么? 工具类中都是静态方法,为了完成一个共用功能
      好处:一次编写,处处可调,提高代码的复用性,提高开发的效率。
      注意:建议把工具类的构造器私有化,因为工具类无需对外创建对象,它的方法都是静态方法,直接用类名访问即可。
  2. 实例成员方法

    • 无static修饰,属于对象,必须用对象触发访问。

    • 什么时候用呢?如果这个方法属于对象,而且要直接访问对象的实例成员,则声明成实例方法。

    • 访问规则:

      只能用:对象名.实例成员方法。

static的应用知识

代码块

  • 是什么? 类的5大成分(成员变量、成员方法、构造器、代码块、内部类)之一

  • 分类

    1. 静态代码块:(重点了解一下)

      格式:static {}
      特点:属于类,与类一起优先加载,自动触发执行一次。
      作用:可以用于在程序启动时,进行静态资源的初始化操作
    2. 实例代码块(几乎不用):

      格式:{}
      特点:属于对象的,每次调用构造器构建对象前都会执行一次,再执行构造器。
      作用:可以用于初始化实例资源

单例设计模式

  • 单例是一种设计模式,是为了解决某个问题

  • 单例能解决的问题:保证一个类对外只能产生一个对象。

  • 重点在于如何实现单例:

    1. 饿汉单例

    • 特点:拿对象时,对象已经存在

    • 实现步骤:

      /**
      * 饿汉单例设计模式
      */
      public class SingleInstance {
         // 1.定义一个类,将构造器私有
         private SingleInstance() {}

         // 2.对外提供一个静态对象
         // 饿汉单例是在获取对象前,就已经准备好了一个对象
         // 这个对象只能通过类名访问,所以定义成static的
         public static SingleInstance instance = new SingleInstance();
      }
    1. 懒汉单例

    • 特点:要拿对象的时候,才开始创建一个对象。

    • 实现步骤:

      /**
      * 懒汉单例设计模式
      */
      public class SingleInstance2 {
         // 2.定义一个静态的成员变量负责存储一个对象,只加载一次,只有一份。
         // 专业的做法是:这里私有化,这样可以避免给别人挖坑
         private static SingleInstance2 instance2;

         // 1.将构造器私有化
         private SingleInstance2() {}

         // 3.对外提供一个静态的获取对象的方法
         public static SingleInstance2 getInstance2() {
             if (instance2 == null) {
                 // 第一次来拿对象 :此时需要创建对象。
                 instance2 = new SingleInstance2();
            }
             return instance2;
        }
      }

面向对象的三大特征之二:继承

继承概述、使用继承的好处

  • 什么是继承? Java允许一个类通过extends与另一个类建立父子关系,这就是继承。

  • 继承的格式:

    • 子类 extends 父类

  • 继承的特点:

    • 子类继承父类后,就可以得到父类的属性和行为。

  • 继承的核心优点:

    • 提高代码的复用性,多个子类的相同代码可以放在父类中,增强了类的扩展性。

继承的设计规范、内存运行原理

  • 设计规范:子类共用属性和行为放在父类,子类独有属性和行为放在子类自己那里。

  • 内存原理:

    子类对象实际上是由子父类这两张设计图共同创建出来的。

继承的特点

  1. Java是单继承模式:一个类只能继承一个直接父类。

  2. Java不支持多继承、但是支持多层继承。

  3. Java中所有的类都是Object类的子类。

继承后:方法重写

  • 概念:子类重写了一个声明与父类一样的方法,覆盖父类的方法。子类认为父类的该方法不好用,以后用自己重写的方法。

  • 重写方法建议加上一个重写校验注解:@Override

    • 作用:要求必须是正确重写的才不报错

    • 作用2:可读性好

  • 重写的要求:

    1. 重写方法的名称和形参列表必须与父类被重写方法的名称和形参列表一致(重点)

    2. 私有方法不能重写

    3. 静态方法不能重写

    4. 重写方法的权限 >= 被重写方法的访问权限。

  • 在重写的方法中如果想要访问父类的方法怎么办呢?

    • super.方法名();

继承后:成员变量、成员方法的访问特点

  1. 就近原则

  2. this.子类自己的成员变量

  3. 在子类方法中访问父类成员怎么办? super.父类成员变量/父类成员方法

继承后:子类构造器的特点

  • 特点:子类的全部构造器默认都会先访问父类的无参数构造器,再执行自己的构造器

  • 为什么呢? 先有爸爸才有儿子。 先调用父类的构造器初始化父类的数据,再调用自己的构造器初始化自己的数据。

  • 代码层面:默认子类构造器的第一行都有一个super(), 访问父类的无参数构造器,写不写都有

继承后:子类构造器访问父类有参构造器

  • 调用父类有参数构造器,初始化继承自父类的数据。

  • super(....) 根据参数调用父类构造器

this、super使用总结

  • this访问子类当前对象的成员。

  • super:在子类方法中指定访问父类的成员。

  • this(...) : 访问本类兄弟构造器

  • super(...):在本类构造器中指定访问父类的构造器

  • 注意事项:super(...) 必须放在第一行,this(...) 也必须在第一行。因此2者不能共存一个构造器中。文章来源地址https://www.toymoban.com/news/detail-807320.html

到了这里,关于Java面向对象进阶第一天的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 黑马Java——面向对象进阶(static&继承)

    目录 1.static静态变量 练习1:定义数组工具类 练习2:定义学生工具类 2.继承  练习:继承的练习(自己设计一个继承体系) 练习 利用方法的重写设计继承结构 练习:带有继承结构的标准Javabean类 3.多态   多态的综合练习 4.包和final 4.1包 4.2final  5.权限修饰符和代码块 5.1权

    2024年01月25日
    浏览(42)
  • Java面向对象进阶第四天(常用API)

    API全称是应用程序编程接口,是Java写好的程序,程序员可以直接调用。 Object是祖宗类,它里面的方法,一切子类对象都可以使用。 public String toString() 默认是返回当前对象的地址信息。 Student s = new Student(\\\"张三\\\",\\\'女\\\', 23); System.out.println(s.toString()); 返回对象地址 System.out.printl

    2024年01月20日
    浏览(49)
  • java基础入门-05-【面向对象进阶(static&继承)】

    类的定义格式如下: 例如: 例如: 1.3.1 封装的步骤 1.使用 private 来修饰成员变量。 2.使用 public 修饰getter和setter方法。 1.3.2 封装的步骤实现 private修饰成员变量 public修饰getter和setter方法 1.4.1 构造方法的作用 在创建对象的时候,给成员变量进行初始化。 初始化即赋值的意

    2024年02月03日
    浏览(61)
  • [ XJTUSE ]JAVA语言基础知识——第一章 面向对象程序设计思想

    类描述了一组有相同 特性 (属性)和相同 行为 (方法)的对象,类和对象是面向对象思想的两个核心概念 · 人类是一种类,每一个具体的人则是这个类的对象 用面向对象程序来模拟真实世界 发现并创建类 发现类的特征 发现类的行为 在面向对象程序中,对象的特征由各种

    2023年04月13日
    浏览(93)
  • Java开发者的Python快速进修指南:面向对象--高级篇

    首先,让我来介绍一下今天的主题。今天我们将讨论封装、反射以及单例模式。除此之外,我们不再深入其他内容。关于封装功能,Python与Java大致相同,但写法略有不同,因为Python没有修饰符。而对于反射来说,我认为它比Java简单得多,不需要频繁地获取方法和属性,而是

    2024年02月05日
    浏览(68)
  • 🔥🔥Java开发者的Python快速进修指南:面向对象--高级篇

    首先,让我来介绍一下今天的主题。今天我们将讨论封装、反射以及单例模式。除此之外,我们不再深入其他内容。关于封装功能,Python与Java大致相同,但写法略有不同,因为Python没有修饰符。而对于反射来说,我认为它比Java简单得多,不需要频繁地获取方法和属性,而是

    2024年02月05日
    浏览(66)
  • 【Java基础教程】(七)面向对象篇 · 第一讲:上干货!面向对象的特性、类与对象、内存结构引用分析、垃圾收集器 GC处理、封装性详解、构造方法、匿名对象、简单 Java 类~

    程序是将数据和逻辑封装在一起的代码段。在Java中,方法是常用的代码段封装方式。然而,在Java中,方法必须存在于一个类中才能使用。因此,我们将进入本章的核心内容——面向对象编程。 利用面向对象设计的程序可以实现代码的重用,并方便开发者进行项目维护。面向

    2024年02月13日
    浏览(44)
  • 🔥🔥Java开发者的Python快速进修指南:面向对象进阶

    在上一期中,我们对Python中的对象声明进行了初步介绍。这一期,我们将深入探讨对象继承、组合以及多态这三个核心概念。不过,这里不打算赘述太多理论,因为我们都知道,Python与Java在这些方面的主要区别主要体现在语法上。例如,Python支持多重继承,这意味着一个类可

    2024年02月05日
    浏览(61)
  • MySQL高级篇第一天

    目录 一、索引 二、索引结构  三、索引分类 四、索引语法 五、索引设计原则 六、视图 七、存储过程与概述 八、触发器 九、总结 一、索引         (一)索引概述 索引是一种能够帮组Mysql高效的从磁盘上 查询数据 的一种数据结构,这些数据结构以某种方式引用( 指向

    2024年02月05日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包