面向对象核心(精简)

面向对象核心(精简),第1张

面向对象核心(精简)

本质:以类的形式组织代码,以对象的形式封装数据。通过分类,将复杂问题简单化(重点在于抽象)

(对象和类的理解:从代码运行的角度:先有类再有对象,类是对象的模板;从认识论的角度:先有对象再有类,类是对对象的抽象)

三大特性:继承、封装、多态


方法

    静态方法(有static关键字),调用:类名.方法

    非静态方法(没有static关键字),调用:先实例化,再对象.方法

    (静态方法和类一起诞生,而非静态方法实例化后才存在)


new关键字

使用new关键字创建对象时,除了会分配内存空间以外,还会对创建好的对象进行默认初始化,以及对类中的构造器的调用


构造器

    特点:和类名相同;无返回值,也不能加void;形如:public Person(){}

    作用:方法的本质在调用构造器,初始化对象的值;

    分类:无参构造;有参构造

    (一个类中什么都不写,会自动生成无参构造;如果定义了有参构造,但是想调用无参构造,必须显示得定义无参构造)

    快捷键:alt+insert


创建对象内存分析


 

封装(数据的隐藏)

最求“高内聚,低耦合”;属性私有get/set

关键字:private

快捷键:alt+insert


继承(本质是对一批类的抽象)

关键字:extends"扩展",子类是父类的扩展

快捷键:ctrl+H 查看继承关系

子类继承了父类就会拥有父类的全部方法

(Java中只有单继承,没有多继承:一个儿子只有一个爸爸,而一个爸爸可以有多个儿子被final修饰的类不能被继承)

Super

    super调用父类的构造方法,必须在构造方法的第一个

    super只能出现在子类的方法或构造方法中

    super和this不能同时调用构造方法

VS this

    代表的对象不同:this本身调用者这个对象 super代表父类对象的应用

    前提:this没有继承也可以使用 super只能在继承条件下使用

    构造方法:this()本类的构造 super()父类的构造

重写(方法的重写,和属性无关)

    要有继承,子类重写父类的方法

    方法名和参数列表必须相同,只是方法体不同

    修饰符:范围可以扩大但不能缩小public>protected>default>private

    异常:范围可以缩小但不能扩大

    快捷键:alt+insert :override

    必须是非静态方法:不能加static

    不能被重写的方法:1.有static关键字 属于类,不属于实例 2. final关键字,不能被重写

VS重载 :方法名相同,参数列表不同


多态(方法的多态)

含义:同一方法可以根据放送对象的不同而采取多种不同的行为方式

一个对象的实际类型是确定的,但可以指向对象的引用类型的类型确有很多

    父类和子类有联系(类型转换异常ClassCastException)

    存在条件:继承关系,方法需要重写,父类引用指向子类对象 Father f1=new son()

    在使用多态后的父类引用变量调用方法时,会调用子类重写后的方法

    把子类转换为父类,直接转换;把父类转换为子类需要强制转换

多态成员变量(运行看左边) fu a=new zi() a.变量 a是fu中的值 调用的是1父类的变量

多态成员方法(编译看左边,运行看右边) fu a=new zi() a.test() f1的门面类型是Fu,但实际类型是Zi,所以调用的是重写后的方法。

关键字:instanceof 判断是否有直接或间接的父子关系 引用对象名 instanceof 某个类


Static(修饰的属性或者方法是和类一块加载的)

在执行构造器之前,会先运行代码块,所以构造器并不是最先运行的,最开始是静态代码块,然后是匿名代码块。需要注意的是静态代码块只会运行一次,静态代码块和类一块加载。所以就算main函数为空,静态代码块也会执行


 

抽象类 (起约束作用,子类需要重写父类的抽象方法)

关键字:abstract

    抽象类不能被new 出来,必须由它的子类来实现,子类必须重写父类的抽象方法

    抽象类中可以写普通的方法

    抽象的方法必须放在抽象类中


接口

关键字:interface

特点:接口中的方法都是抽象的public方法(类型前面自带public abstract) 接口中的属性都是常量 (前面自带public static final)

需要一个类来实现,类 implements 接口,接口 可以弄多个接口,这样就实现伪多继承,只是伪,Java中还是只有单继承的

    起约束作用

    定义一些方法让不同的人去实现

    接口不能被实例化,接口中没有构造方法

    必须要重写接口中的方法

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5712903.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存