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

原文地址:https://www.cnblogs.com/wrrr/p/14789271.html