Java基础复习-----day03(面向对象)

面向对象:

面向过程编程:着重点在步骤,强调的是过程,凡事亲力亲为

面向对象:确切的说更像是一个统筹者,站在更高的维度,着重点在结果,谁去做无所谓

把大象装冰箱分三步,面向过程编程更在意的是打开冰箱,把大象装进去,关上冰箱,而面向对象编程在意的是谁来做这三个步骤

类:

指一类事物,在Java中用关键字class来修饰

类是抽象的,一般提取一类事物的共性特征与功能

可理解为图纸,模板

对象:

对象是根据类创造出的一个个具体的实例,一个类可以创建多个不同的对象,我们可以通过对象唯一的地址值来区分

创建对象过程分析

Dog d=new Dog();创建对象时,内存中发生什么?

1.首先在栈内存中开辟一块空间,Dog类型引用类型变量d,把d压入栈底,此时d只有默认 值 d=null;

2.在堆内存中开辟一块空间用于存放Dog类型的对象

3.要给这个对象进行初始化,例如:String s=null;

4.初始化完成后会生成一个唯一的地址值,并把这个我唯一的地址值交给栈内存中的变量d保存

5.后续想对对象进行操作,比如 d.age=3;会先到栈内存中找到d变量保存的地址值,然后根据地址值找到堆内存中的对象进行操作

面向对象三大特征之——封装

1.为啥要封装

1.提高程序的安全性

2.封装可以使资源按照我们预先规定的方式来操作

2.属性的封装

用private修饰属性,被private修饰的属性只能在本类使用,外界无法访问,提高了数据的安全性,外界想要访问必须按照我们提供的方式来调用,需要根据属性来生成公共的set() 和get()

3.方法的封装

可以使用public,private等来修饰

总结:属性私有化,提高数据安全性,行为公开化,提高代码复用性

构造函数

格式:与类同名,且没有返回值类型

作用:创建对象

执行时机:每次创建对象时都会执行

构造函数分三种:无参构造,含参构造,全参构造

无参构造:默认存在,若添加其它构造,无参构造会被覆盖

含参构造:对参数无要求,有参数就行

全参构造:参数必须与本类的属性一致,全参构造不仅能创建对象,并且还能给赌侠ing的所有属性赋值

构造代码块 

位置:类里方法外

执行时机:每次创建对象时执行,且优先于构造函数执行

作用:提取所有构造方法的共性功能

局部代码块

位置:方法里

执行时机:调用局部代码块所在的方法时执行

作用:控制变量的作用范围

总结:构造代码块>构造方法>局部代码块

this的用法

1.当成员变量与局部变量同名时,使用this指代成员变量

2.使用this在构造函数的第一行调用构造函数的功能

3.this()调用的是本类的无参构造  this(参数)调用的是本类对应参数的构造方法

super的用法

1.当父类的成员变量与子类的变量重名时,使用super指代父类成员变量

2.使用super在构造函数的第一行调用构造函数的功能

3.super()调用的是本类的无参构造  super(参数)调用的是本类对应参数的构造方法

面向对象三大特征之继承

1.继承关键字:extends

2.继承相当于把父类的功能复制了一份

3.Java只支持单继承,一个子类只能有一个父类,一个父类可以有多个子类

4.继承具有传递性 AextendsB   BexrendsC,此时A具有C的功能

5.子类只能使用父类的非私有资源,被private修饰的资源不可用

6.子类可以在继承了父类的功能外扩展自己的额外功能,青出于蓝而胜于蓝

7.继承是强耦合关系,依赖性非常强


继承时的构造方法

1.子类创建对象时会先调用父类的构造方法、

2.因为子类构造函数第一行默认存在super();表示调用父类的无参构造

3.当父类没有无参构造时,可以通过super(参数)调用父类的含参构造

注意:子类必须调用父类的一个构造函数,无论无参还是含参

4.构造函数不能被继承!,因为与法院因构造函数的名字必须是本类类名,不能在子类出现父类名字的构造函数

方法的重写

1.发生在父子类之间,是在不改变父类方法的前提下,实现功能的修改,重写后子类对象调用的就是重写后的功能

2.重写原则:两同两小一大

        两同:方法名和参数列表相同

        两小:子类方法的返回值类型要么和父类相同,要么是父类返回值的子类,

        子类抛异常小 于 父类

        一大:子类方法的修饰符权限>=父类的修饰符权限

静态:关键字static

1.static可以修饰方法和成员变量

2.被static修饰的资源称为静态资源

3.静态资源随着类的加载而加载,最先加载,优先于对象加载

4.静态资源可通过类名直接调用

5.静态资源被全局共享,只有一份

6.静态资源只能调用静态资源

7.静态区域类不允许使用super与this关键字,因为静态加载时本类与父类对象还未加载

静态代码块

格式:static{ }

位置:类里方法外

执行时机:随着类的加载而加载,优先于对象加载【只加载一次】

作用:用于那些需要第一时间加载,且只加载一次的资源,常用来初始化

执行顺序:静态代码块.> 构造代码块>构造方法>普通方法(若方法里有局部代码块则继续执行局部代码块)

注意:若有多个静态资源,执行顺序取决于先后位置

            静态不可与this,super共用

final关键字

修饰类:最终类,不可被继承

修饰方法:方法为最终实现,不可被重写

修饰常量;值不可更改,且常量定义时必须赋值(常量定义时需要全大写,单词间下换线隔开)

面向对象三大特征之多态

1.多态前提:必须有继承加重写

2.父类引用指向子类对象:父类类型的引用类型变量保存的是子类类型的对象地址值

3.编译看左边,运行看右边:编译时要看父类是否定义了这个资源,运行时使用的是子类的功能

资源使用情况:

        1.成员变量使用的是父类的

        2.成员方法使用的是父类的定义,子类的方法体

        3.如果多态对象调用的是未被子类重写过的方法,则方法定义与方法体都是用父类的,

        这个不符合多态的前提

        4.静态资源属于类资源,随着类的加载而加载一次,通过类名直接调用,

           被全局所有对象共享,所以静态不存在重写,在哪个类定义就属于哪个类

        

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值