0
点赞
收藏
分享

微信扫一扫

JAVA复习之面向对象编程


JAVA复习之面向对象编程_抽象类

一、面向对象编程基础

(一)面向对象概述

1、对象,是一个抽象概念,表示任意存在的事物,世间万物皆对象!!

2、类是封装对象的属性和行为的载体,反过来说具有相同属性和行为的一类实体被称为类。

特点

1、封装性

将对象的属性和行为封装起来,其载体就是类,类通常会对客户隐藏其实现细节,这就是封装的思想。

JAVA复习之面向对象编程_多态_02

2、继承性

继承是实现重复利用的重要手段,子类通过继承,复用父类属性和行为的同时又添加了子类特有的属性和行为。

JAVA复习之面向对象编程_父类_03

3、多态性

将父类对象应用于子类的特点就是多态,子类继承父类特征的同时,也具备了自己的特征,并且能够实现不同的效果,这就是多态化的结构。

JAVA复习之面向对象编程_匿名内部类_04

(二)类与对象

1、成员变量

JAVA复习之面向对象编程_父类_05

2、成员方法

JAVA复习之面向对象编程_多态_06

JAVA复习之面向对象编程_java_07

3、构造方法

JAVA复习之面向对象编程_匿名内部类_08

什么是构造方法?

JAVA复习之面向对象编程_匿名内部类_09

私有构造方法

JAVA复习之面向对象编程_抽象类_10

4、局部变量

JAVA复习之面向对象编程_抽象类_11

局部变量的有效范围:

JAVA复习之面向对象编程_多态_12

​注意:​ ①java中不同区域中可以有同名变量;②在同一区域中不可以定义相同名称和类型的局部变量

5、this关键字

变量与参数同名怎么办?

因此我们就引入了this关键字JAVA复习之面向对象编程_父类_13

​注意:​ this()语句之前不可以有其他代码

6、static关键字

静态变量

JAVA复习之面向对象编程_java_14

静态常量

JAVA复习之面向对象编程_多态_15

静态方法

JAVA复习之面向对象编程_java_16

静态代码块【声明类对象的时候,就会执行】

JAVA复习之面向对象编程_java_17

二、面向对象核心技术

(一)类的封装

将对象的属性和行为封住起来,而将对象的属性和行为封住起来的载体就是类,类通常对客户隐藏其实现细节,这就是封装的思想

(二)类的继承、extends关键字

1、继承

JAVA复习之面向对象编程_java_18

2、extends关键字

在java中让一个类继承另一个类需要使用extends关键字.

语法​:类1 extends 类2

注意​:java仅支持单继承

3、方法的重写

父类的成员都会被子类继承,当父类中的某个方法并不适用于子类时,就需要在子类中重写父类的这个方法。

JAVA复习之面向对象编程_父类_19

在继承中还有一种特殊的重写方式,子类与父类的成员方法返回值、方法名称、参数类型及个数完全相同,唯一不同的是方法实现内容,这种特殊的重写方式被称为重构。

super关键字

super关键字代表父类对象,且必须放第一位;

4、所有类的父类—Object

JAVA复习之面向对象编程_抽象类_20

​注意​:Object类中的getClass()、notify()、notifyAll()、wait()等方法不能被重写,因为这些方法被定义为final类型。

getClass()方法

getClass方法会返回某个对象的执行时的Class实例,然后通过Class实例调用getName()方法获取类的名称。

getClass().getName;//获取名称

toString()方法

toString()方法会返回某个对象的字符串表示形式。当打印某个类对象时,将自动调用重写的toString()方法。

equals()方法

Object类中的equals()方法比较的是两个对象的引用地址是否相等。

JAVA复习之面向对象编程_抽象类_21

(三)类的多态【一种定义、多种实现】

类的多态性可以从两方面体现:①是方法的重载;②类的上下转型;

1、方法的重载

JAVA复习之面向对象编程_父类_22

2、类的上下转型

JAVA复习之面向对象编程_java_23

即把子类对象赋值给父类类型的对象,这种技术被称为“向上转型”;

JAVA复习之面向对象编程_抽象类_24

说明:当使用显示类型转换向下转型时,必须向编译器指明将父类对象转换为哪一种类型的子类对象;

JAVA复习之面向对象编程_匿名内部类_25

3、instanceof关键字【判断父类对象是否为子类的实例】

使用instanceof关键字的表达式返回值为布尔值;

JAVA复习之面向对象编程_多态_26

(四)抽象类与接口

抽象类

在java中,把类似无法使用具体语言定义的图形类称为抽象类【抽象类不能产生对象实例】

JAVA复习之面向对象编程_多态_27

抽象类与抽象方法【继承类必须重写抽象方法】:

JAVA复习之面向对象编程_匿名内部类_28

具体实现:

JAVA复习之面向对象编程_匿名内部类_29

使用抽象类和抽象方法时,需要遵循以下原则:

①在抽象类中,可以包含抽象方法,也可以不包含抽象方法,但是包含了抽象方法的类必须被定义为抽象类;

②抽象类不能直接被实例化;

③抽象类被继承后,子类需要重写抽象类中的所有抽象方法;

④如果继承抽象类的子类也被声明为抽象类,则可以不用重写父类中所有的抽象方法;

什么是接口?

接口是抽象类的延伸,接口中所有的方法都没有方法体;

implements是一个类,实现一个接口用的关键字,它是用来实现接口中定义的抽象方法;

​说明​:在接口中定义的任何变量都自动是static和final的,因此,在接口中定义变量时,必须进行初始化,而且,实现接口的子类不能对接口中的变量重新赋值;

JAVA复习之面向对象编程_多态_30

接口的声明及实现类

JAVA复习之面向对象编程_多态_31

多重继承(接口最大的优势)

JAVA复习之面向对象编程_匿名内部类_32

区分抽象类与接口

JAVA复习之面向对象编程_匿名内部类_33

抽象类与接口的五点不同:

JAVA复习之面向对象编程_父类_34

访问控制

1、访问控制符

JAVA复习之面向对象编程_父类_35

​注意​:声明类时,如果不使用public修饰符设置类的权限,则这个默认为default(缺省)修饰;

使用访问控制符时,需要遵循以下原则:

①大部分顶级类都使用public修饰符

JAVA复习之面向对象编程_抽象类_36

2、java类包

JAVA复习之面向对象编程_匿名内部类_37

3、final关键字【最后的最终的】

①被final修饰的类、方法和变量不能被改变;

②被final修饰的类不能被继承;

③被final修饰的方法不能被重写;

④final关键字可用于修饰变量,一旦变量被final修饰,就不可以再改变变量的值,通常把final修饰的变量称为常量;

(五)内部类

JAVA复习之面向对象编程_父类_38

匿名内部类:

匿名内部类的特点是只需要使用一次,也就是说,匿名内部类不能被重复使用;

语法如下:

new A{
...//匿名内部类的类体
};
abstract class FreshKeepingFilm { // 创建“保鲜膜”抽象类
abstract void pack(); // 定义抽象的包装方法
}

public class Sausage { // 创建香肠类
public static void main(String[] args) {
new FreshKeepingFilm() { // 创建匿名内部类FreshKeepingFilm的对象
@Override
void pack() { // 重写抽象的包装方法
System.out.println("缠上保鲜膜为香肠保鲜");
}
}.pack(); // 匿名内部类FreshKeepingFilm的对象调用重写抽象的包装方法
}
}

使用匿名内部类时应该遵循以下原则:

①匿名类没有构造方法;

②匿名类不能定义静态的成员;

③匿名类不能用private、public、protected、static、final、abstrac等修饰;

④只可以创建一个匿名类实例。

什么情况下会使用匿名内部类?

其实匿名内部类和其他类有着相同的内部结构,只不过匿名内部类创建出的对象没有被具体的变量所引用,所以匿名内部类是“一次性”的。如果创建出的类对象有且仅有一次, 在这种场景中就可以考虑使用匿名内部类。



举报

相关推荐

0 条评论