面向对象基础知识汇总


文章目录

  • 前言
  • 一、类与对象
  • 二、javabean类
  • 三、关键字
  • 四、构造方法,重载
  • 五、继承,重写,多态
  • 六、抽象类(abstract)
  • 七、接口
  • 总结


前言

面向对象的学习重点就是如何获取已有对象并使用,以及学习如何自己设计对象并使用。

在java中,必须先设计类,才能获得对象。所以写好对象对应的类,才能写好对象。

一、类与对象

类是共同特征的描述(设计图)

 

对象是真实存在的具体实例。

1.如何定义类:

public class 类名

2.如何得到对象:

类名  对象名 = new 类名();

3.拿到对象可以做什么:

对象.成员变量;

对象.成员方法(....);

二、Javabean类

类名需要见名知意

成员变量使用private修饰

提供至少两个构造方法:无参构造方法以及带全部参数的构造方法

成员方法

提供每一个成员变量的get和set方法

其他行为

三、关键字

不同权限修饰符对类的限制如下图:

 static(静态):

静态变量:

特点:被该类所有对象共享,不属于对象,属于类

随着类的加载而加载,优先于对象存在

调用方式:

类名调用(推荐)

虽然对象名也可以调用,但因为静态变量属于类而不属于对象,所以不推荐使用对象名调用静态变量

静态方法:

特点:多用在测试类和工具类中,javabean中很少用

static的注意事项:
静态方法只能访问静态变量和静态方法
非静态方法可以访问静态变量或者静态方法,也可以访问非静态的成员变量和非静态的成员方法
静态方法中没有this关键字

四、构造方法,重载

构造方法的作用:创造对象时,给虚拟机自动调用为成员变量进行初始化。

构造方法分为两种:

无参构造:初始化对象时,成员变量的数据均采用默认值

有参构造:初始化对象时,同时可以为对象进行赋值

PS:任何类自带无参构造,不用书写

一旦定义了有参构造,无参构造就没有了,需要自己写无参构造

建议任何时候手动写上无参和有参构造。

构造方法的重载:两种构造方法名相同,但参数(例如参数数量,顺序,数据类型)不同,叫做构造方法的重载。

五、继承,重写,多态

1.继承

什么时候用继承:

当类与类之间,存在相同的内容,并满足子类是父类的一种,就可以考虑使用继承,来优化代码。

继承的格式:

public class 子类 extends 父类 {}

继承的特点:

Java只支持单继承,不支持多继承,但支持多层继承

继承中成员变量的访问特点:就近原则

继承中构造方法的访问特点:
父类中的构造方法不会被子类继承
子类中所有的构造方法默认先访问父类中的无参构造,再执行自己
为什么?
子类在初始化时,有可能会使用到父类中的数据,如果父类没有完成初始化,子类将无法使用父类中的数据
子类初始化之前,一定要调用父类构造方法先完成父类数据空间的初始化
怎么调用父类构造方法:
子类构造方法第一行语句默认都是:super(),不写也存在,且必须在第一行。
如果想调用父类有参构造,必须手动写super进行调用
 

2.重写

方法的重写:当父类的方法不能满足子类现在的需求时,需要进行方法重写

在继承体系中,子类出现了和父类中一模一样的方法声明,我们就称子类这个方法是重写的方法。

@override注解:

@override是放在重写后的方法上,校验子类重写时是否正确

建议重写方法都加上@override注解,代码安全

重写方法的名称,形参列表必须与父类中的一致
子类重写父类方法时,访问权限子类必须大于等于父类(空着不写<protected<public)
子类重写父类方法时,返回值类型子类必须小于等于父类
建议:重写的方法尽量和父类保持一致
只有被添加到虚方法表中的方法才能被重写

3.多态

多态就是同类型的对象表现出的不同形态

多态的表现形式:

父类类型 对象名称 = 子类对象

多态的前提:有继承关系,有父类引用指向子类对象,有方法重写

多态的好处是:使用父类型作为参数,可以接受所有子类对象,体现多态的扩展性与便利。

多态调用成员的特点

变量调用:编译看左边,运行也看左边

方法调用:编译看左边,运行看右边

堕胎的优势

方法中,使用父类型作为参数,可以接受所有子类对象

六、抽象类(abstract)

抽象类和抽象方法的格式:

public abstract class 类名{}

public abstract 返回值类型 方法名(参数列表);

抽象类和抽象方法强制子类必须按照这种格式书写

抽象类的子类,要么重写抽象类中的所有方法,要么是抽象类。

七、接口

接口是规范行为的一个规则

接口的定义和使用

用interface来定义

public interface 接口名{}

接口不能实例化,接口和类之间是实现关系,通过implements关键字表示

public class 类名 implements 接口名{}

接口的子类(实现类)

要么重写接口中的所有抽象方法

要么是抽象类

PS:接口和类的实现关系,可以单实现,也可以多实现。
public class 类名 i,plements 接口名1,接口名2{}
实现类还可以在及大亨一个类的同时实现多个接口。
public class 类名 extends 父类 implements接口名1,接口名2{}

接口中成员的特点
成员变量:
只能是常量
默认修饰符:public static final
构造方法:无
成员方法:只能是抽象方法,默认是public abstract类型
 


总结

本周已经完成了第一阶段的学习,所学内容较多,面向对象只是其中的一部分。本篇也只是写了一些有关面向对象的理论知识,并没有对应代码以及例题,等我复习完所有章节之后,将会挑几段书上或者网上的代码以及例题在下周的博客中分享。

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值