zoukankan      html  css  js  c++  java
  • Java学习笔记 第三章 面向对象

    JAVA学习笔记第三章

    3.JAVA面向对象

    image-20210514212229902

    image-20210514221657297

    3.1面向对象的三个阶段

    image-20210514221909954

    3.2创建类

    image-20210514221844123

    3.3创建对象

    Person tony = new Person();
    

    3.4局部变量和成员变量的区别

    image-20210514222618271

    image-20210514223008707

    3.5构造方法

    构造器的目的不是为了创建对象,因为在调用构造器的时候,对象已经创建好了,并且属性有默认的初始化的值,调用构造器的目的是给属性进行赋值。

    一般我们会重载构造器,在重载的构造器中进行属性的赋值。

    重载构造器以后,如果空构造器没写,那么系统也不会再分配空的构造器,那么调用空构造器的话会出错。

    image-20210514223514678

    public class Person{
      //属性
      
      //没有任何参数的构造器称为空构造器
      public Person(){
        
      }
      //注意我们不会在空构造器中进行初始化的操作,系统会默认给我们分配一个构造器,只是我们看不到罢了
      //但是后面学习一些东西的时候,需要用到空构造器,我们一般还是加上
      
      //方法
      
      
      
    }
    

    程序存在就近原则,在对象的属性前面加上this来修饰,this表示正在创建的那个对象

    image-20210514225027095

    3.6内存分析

    image-20210514225644426

    image-20210514230136336

    3.7this

    image-20210514234215630

    image-20210514234033921

    需要使用this.age,就可以拿到Person类中的属性age

    image-20210514234346886

    this.eat();

    image-20210514234526735

    this(name, age);

    3.8static

    image-20210514234959162

    static修饰属性:

    image-20210514234926594

    image-20210514235322889

    image-20210514235522725

    image-20210514235612535

    属性:

    • 静态属性(类属性)
    • 非静态属性(实例变量)

    staic修饰方法:

    static修饰的方法优先于对象存在,在静态方法中不能访问非静态的属性和方法,在静态方法中不能使用this关键字。

    • 不能访问非静态的属性
    • 不能访问非静态的方法
    • 不能使用this关键字
    • 非静态的方法可以使用对象名.方法名调用,静态的方法既可以创建对象来调用也可以使用类名.方法名调用。

    image-20210514235831583

    image-20210515000402665

    3.9代码块

    代码块分类:普通块、构造块、静态块、同步块(多线程)

    普通块在类的方法中:一般限制局部变量的作用域

    构造块在类的方法之外:实现在方法外写代码,优先于普通块执行

    静态块:在构造块的基础上加上static修饰,同样由于static修饰,静态块只能访问到静态属性和静态方法,且较构造块先执行,在类加载的时候执行一次

    image-20210515001039260

    执行顺序:静态块>构造块>普通块

    image-20210515001457250

    3.10包

    包的作用:

    • 解决.java重名问题
    • 解决权限问题

    包名定义:全部小写,中间用.隔开,加上域名.模块名,不能使用系统关键字(nul,con,com1-com9),包声明一般在非注释性代码第一行

    image-20210517011116699

    java的导包没有包含和被包含的关系,设置目录是平级的

    静态导入

    image-20210517011637984

    在静态导入以后,同一个类有相同的方法,优先使用自己定义的。

    3.11封装

    image-20210517011918016

    image-20210517012307601

    image-20210517012609350

    3.12继承

    image-20210517012944239

    image-20210517013350840

    image-20210517013600570

    内存分析:

    image-20210517013830314

    权限修饰符:

    image-20210517014015815

    image-20210517014306734

    重写:

    image-20210517092750504

    image-20210517093702656

    supper:

    image-20210517094043563

    image-20210517094150552

    image-20210517094447904

    image-20210517095247604

    image-20210517094913870

    因为super和this都要放在第一行,并且super()和this()构造器同时使用会覆盖值。

    object类:

    image-20210517100016513

    object类中toString方法:将类转换成字符串

    object类中的equals方法:提供对象的内容是否相等,对象的内容指的就是属性,但是object类提供的就是比较两个类的地址,一般不会直接使用,会在继承object类中重写方法,自己定义判断是否相等

    image-20210517231103994

    image-20210517232003217

    自动生成equals

    image-20210518112628568

    image-20210518113048910

    类和类之间的关系

    image-20210518113733821

    image-20210518113755018

    image-20210518113813298

    3.13多态

    多态和属性无关,多态指的是方法的多态,而不是属性的多态

    可以提供扩展性,但是扩展性没有达到最好,以后还会学习反射

    image-20210518114851480

    image-20210518115051532

    image-20210518115908262

    image-20210518120045332

    image-20210518120322845

    简单工厂模型:

    image-20210518123047584

    image-20210518123000213

    3.14final

    final可以修饰变量、方法、类

    final修饰变量

    image-20210518123545057

    image-20210518123815786

    final修饰方法

    image-20210518123933718

    final修饰类

    image-20210518124026527

    image-20210518124214183

    image-20210518124325485

    3.15抽象类和抽象方法

    image-20210518124701126

    image-20210518124847414

    image-20210518125106804

    image-20210518125219827

    3.16接口

    image-20210518125255715

    image-20210518125400350

    image-20210518125456194

    image-20210518125634816

    image-20210518125652710

    image-20210518125753827

    image-20210518125915623

    image-20210518125959186

    image-20210518130026632

    image-20210518130200739

    image-20210518130345715

    image-20210518130453986

    image-20210518131052909

    image-20210518131014234

    image-20210518131034198

    使用接口中的非抽象方法:

    image-20210518131155797

    接口中的静态方法:

    image-20210518131608367

    image-20210518131327465

    image-20210518131516418

    image-20210518131531762

    为什么jdk1.8之后新增非抽象方法:

    image-20210518131937575

    3.17内部类

    image-20210518132503097

    image-20210518132543100

    image-20210518133039195

    image-20210518133104701

    image-20210518133014770

    局部内部类:

    image-20210518133342609

    image-20210518133542914

    image-20210518133645015

    image-20210518133829761

    3.18面向对象项目

    image-20210518133916288

    image-20210518134058919

  • 相关阅读:
    JPA的一对多,多对多用法
    pg数据库中时间查询的方式
    DNS消息格式
    Netty之Java堆外内存扫盲贴
    Netty writeAndFlush() 流程与异步
    Netty之有效规避内存泄漏
    TCP状态变迁图
    TCP/IP详解--发送ACK和RST的场景
    TCP/IP详解--连接状态变迁图CLOSE_WAIT
    TCP中异常关闭链接的意义 异常关闭的情况
  • 原文地址:https://www.cnblogs.com/wrrr/p/14789271.html
Copyright © 2011-2022 走看看