Java面向对象

272 阅读4分钟

Java面向对象

构造器

类中的构造器被称为构造方法,是在进行创建对象的时候必须调用的,并且构造器有以下特点:

1.必须和类的名字相同

2.必须没有返回类型

作用:

1.new的本质是在调用构造方法

2.初始化对象的值

Tip: 如果定义了有参构造之后,想使用无参构造(即new后括号不带参数),就要在再定义一个无参参数。

image.png

封装

程序追求高内聚,低耦合。封装即是数据的隐藏,禁止直接访问一个对象中数据的实际表示,而应通过操作接口来访问。 举例: 在Student类里将name、id、sex属性设为私有。

image.png

这样在引用这个类时就不能直接引用这个属性。

可以用get、set方法来操作这些属性。

get获得这个数据

image.png

set给这个数据设置值

image.png

用法

image.png

image.png

继承

继承的定义

继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。通俗的讲就是子类有的父类不一定有,父类有的子类一定有,父类更通用,子类更具体。

继承的格式

image.png

继承的优点

冗余少,代码更为简洁,后期更好维护。

关键词

extends关键字的继承是单继承(即一个子类只能有一个父类),可以是多重继承(即一个父类可以有多个子类)。

implements关键字能同时继承多个关键词。

super关键字能够对父类成员的访问,用来引用当前对象的父类。调用父类构造器,必选在子类构造器第一行。(只有在继承条件下才可以使用)

this关键字引用自己。

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

重写

能够在子类里改变与父类同名的方法,但不能新增方法。(必须是非静态方法和public)

image.png (来源菜鸟教程)

访问权限:public>protected>Default>private(修饰符的范围可以扩大但不能缩小)

抛出的异常可以被缩小但不能被扩大

在子类中重写父类方法,用super关键字强调。

重载

在一个类里面,方法名字相同,而参数不同。返回类型可以相同也可以不同。

例子

image.png

输出

image.png

重写和重载的区别

重载是一个类中定义了多个方法名相同,而他们的参数的数量不同或数量相同而类型和次序不同。

重写是在子类存在方法与父类的方法的名字相同,而且参数的个数与类型一样,返回值也一样的方法。

多态

多态是同一个行为具有多个不同表现形式或形态的能力。

存在的必要条件:继承、重写。

父类的引用指向子类的实现

父类可以指向子类,但不能调用子类独有的方法。对象能执行哪些方法,主要看左边的类型,和右边关联不大。

父类 对象名=new 子类()

static

静态方法(static):方法的调用只和左边定义的数据类型有关。

静态变量对于类而言内存只有一个,静态变量尽量通过类名去访问。

非静态方法可以调用静态方法,静态方法可以不用创建对象直接使用

生成顺序:静态代码块、匿名代码块、构造方法

抽象类

定义的时候写上static

抽象方法:只有方法名字,没有方法的实现。

1.不能new抽象类,只能靠子类去实现它。

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

3.抽象方法必须写在抽象类里。

接口(interface)

接口中的所有定义默认是抽象的(public abstract),所以方法可以直接写作:返回类型 方法名();

类可以通过implements接口,实现了接口的类,就需要重写接口中的方法。

接口可以实现多继承。接口不能被实例化,接口中没有构造方法。

内部类

image.png

内部类能获得外部类的私有属性

参考www.bilibili.com/video/BV1FE…