Day13: 修饰符、多态、抽象类

修饰符

修饰符的分类

权限修饰符

状态修饰符

权限修饰符

 

状态修饰符

final(最终态)

static(静态)

final

final 关键字是最终的意思,可以修饰成员方法,成员变量,类

final修饰的特点:

修饰方法:表明该方法是最终方法,不能被重写

修饰变量:表明该变量是常量,不能被再次赋值

修饰类: 表明该类是最终类,不能被继承

final修饰局部变量

变量是基本类型:final 修饰指的是基本类型的 数据值 不能发生改变

变量是引用类型:final 修饰指的是引用类型的 地址值 不能发生改变,但是地址里面的内容是可以发生改变的

 

 

static

static 关键字是静态的意思,可以修饰成员方法,成员变量

static 修饰的特点:

被类的所有对象共享

这也是我们判断是否使用静态关键字的条件

也可以通过类名调用

当然,也可以通过对象名调用

推荐使用类名调用

 

 

static访问特点

非静态的成员方法:

能访问静态的成员变量

能访问非静态的成员变量

能访问静态的成员方法

能访问非静态额成员方法

静态成员方法:

能访问静态的成员变量

能访问静态的成员方法

 

总结一句话就是: 静态成员方法只能访问静态成员

 

多态

多态概述

同一个对象,在不同时刻表现出来的不同形态

举例:猫

我们可以说猫是猫:猫 cat = new 猫();

我们也可以说猫是动物: 动物 animal = new 猫();

这里猫在不同的时刻表现出来了不同的形态,这就多态

多态的前提和实现:

有继承/实现关系

有方法重写

有父类引用指向子类对象

 

 

 

多态中成员的访问特点

成员变量:编译看左边,执行看左边

成员方法:编译看左边,执行看右边

为什么成员变量和成员方法的访问不一样呢?

因为成员方法有重写,而成员变量没有

 

 

 

 

多态的好处和弊端

多态的好处:提高了程序的扩展性

具体体现:定义方法的时候,使用父类型作为参数,将来在使用的时候,使用具体的子类型参与操作

多态的弊端:不能使用子类的特有功能

 

 

 

 

 

多态中的转型

向上转型

从子到父

父类引用 指向 子类对象

向下转型

从父到子

父类引用 转为 子类对象

 

 

 

多态转型内存图解

 

案例

需求:请采用多态的思想实现猫和狗的案例,并在测试类中进行测试

思路:

1 定义动物类(Animal)

成员变量:姓名,年龄

构造方法:无参 带参

成员方法: get/set方法,吃饭()

2 定义猫类

构造方法:无参 带参

成员方法:重写吃饭()

3 定义狗类

构造方法:无参 带参

成员方法:重写吃饭()

4 定义测试类(AnimalDemo),写代码测试

 

 

 

 

抽象类

抽象类概述

在java中,一个没有方法体的方法应该定义为抽象方法,而类中如果有抽象方法,该类必须定义为抽象类

 

 

抽象类的特点

抽象类和抽象方法必须使用 abstract 关键字修饰

public abstract class 类名{}

public abstract viod eat();

抽象类中不一定有抽象方法,有抽象方法的类一定是抽象类

抽象类不能实例化

抽象类如何实力化呢?参照多态的方式,通过子类对相实例化,这叫抽象类多态

抽象类的子类

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

要么是抽象类

 

 

 

 

抽象类的成员特点

成员变量:

可以是变量

也可以是常量

构造方法:

有构造方法,但是不能实例化

那么,构造方法的作用是什么呢?用于子类访问父类数据的初始化

成员方法:

可以有抽象方法,限定子类必须完成某些动作

也可以有非抽象方法:提高代码的复用性

 

 

 

 

案例

需求:请采用抽象类的思想实现猫和狗的案例,并在测试类中进行测试

思路:

1 定义动物类(Animal)

成员变量:姓名,年龄

构造方法:无参 带参

成员方法: get/set方法,吃饭()

2 定义猫类

构造方法:无参 带参

成员方法:重写吃饭(...)

3 定义狗类

构造方法:无参 带参

成员方法:重写吃饭(...)

4 定义测试类(AnimalDemo),写代码测试

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值