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

  • 相关阅读:
    hadoop中namenode发生故障的处理方法
    开启虚拟机所报的错误:VMware Workstation cannot connect to the virtual machine. Make sure you have rights to run the program, access all directories the program uses, and access all directories for temporary fil
    Hbase的安装与部署(集群版)
    分别用反射、编程接口的方式创建DataFrame
    用Mapreduce求共同好友
    SparkSteaming中直连与receiver两种方式的区别
    privot函数使用
    Ajax无刷新显示
    使用ScriptManager服务器控件前后台数据交互
    数据库知识
  • 原文地址:https://www.cnblogs.com/wrrr/p/14789271.html
Copyright © 2011-2022 走看看