面向对象④

文章讨论了面向对象编程中的核心概念,包括抽象类及其抽象方法的定义与作用,强调了抽象类在不完全实现具体功能时的应用。多态的概念被介绍,说明了如何通过父类引用调用子类方法以实现不同状态。此外,还探讨了final关键字的使用,以及接口作为完全抽象的定义功能的工具,强调了接口的静态常量、抽象方法、静态方法和默认方法的特性,以及类与接口之间的多态关系。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

面向对象④

抽象类

  • 抽象方法

  • 抽象方法是一种特殊的方法:它只有方法的声明(定义public void text( )),而没有具体的实现. 抽象方法必须用abstract关键字进行修饰.
    Animal
    eat( ){
    动物吃东西
    }
    动物类型很大,在类体结构位于上层,里面实现与大多数子类实现都可能不一样
    在上层类中实现功能,就没有必要了,但是程序设计时,应该在上层定义这一类型应该有什么功能.然后让子类继承父类,在子类中对抽象方法进行重写.
    抽象类:被abstract 关键字修饰的类,里面可能包含抽象方法,当类中没有足够的信息(抽象方法)来描述一个具体的对象时
    抽象类除了不能创建对象,类的其他功能都正常(成员变量,成员方法,构造方法)

当一个具体的类继承抽象类后,要么重写抽象类中抽象方法;要么将此类声明为抽象类,这个具体的类重写父类方法时,只能调用无参方法.

多态(多种状态)

同一个父类,可以表示不同的子类对象,状态就不同了
父类引用指向子类对象,从而产生多种形态
Animal dog = new Dog();
Animal cat = new Cat();
同一种事物,在不同时刻表现不同状态
二者存在直接或者间接的继承关系时,父类引用指向子类的对象,即形成多态。
多态的好处:
提高程序的扩展性
多态注意事项
注意成员调用时,分为编译期间和运行期间
编译期间:写代码时 由于类型上升为父类类型,所以只能调用到父类中定义的成员.
运行期间:运行代码时,实际调用的是子类中重写的方法
对应非静态成员方法:编译看左边,运行看右边
多态的缺点
对应静态成员方法和成员变量都是编译看左边,运行看左边
为了实现多态性,我们将子类类型向上转为了父类类型,但是一旦类型上升为父类类型,那么就调用不到子类中特有的方法,这就是多态在某种情况下的缺点。
解决办法:向下转型,把父类类型转为子类类型.

Dog d = (Dog)dog;
d.lookHome();//强制转型

final关键字
final 用于修饰类,方法,参数,和成员变量

final不能修饰抽象类和接口,因为final修饰的类不能被继承final修饰方法,修饰后方法不能被子类重写
final修饰方法的参数,在方法内部,就不能修改参数值
final修饰成员变量,
情况①:在编码时,值就确定了,就直接进行赋值,此种情况最好加上static关键字,让其在内存中只有一份.
情况②:每一个情况中都有一个常量,必须在构造方法中为常量进行初始化,一旦初始化后,值都不能修改
不能被定义为抽象类或是接口,因为final修饰的类不可被继承

接口

接口:是一种更为彻底的抽象,主要来定义功能
接口是不能被创建对象的
jdk8以后接口可以定义四种内容:
1.静态常量
2.抽象方法
3.静态方法
4.默认方法:需要类继承,然后通过子类调用
类实现接口,一个类可实现多个接口
MyInterfaceImpl类就是MyInterface接口的实现类
在这里插入图片描述
一个类只能直接继承一个类,问接多层继承多个类
一个类可以实现多个接口
一个接口可以继承多个接口
接口和实现类之间也是可以有多态关系的
用一个接口,表示一类拥有此功能的类
接口的特性
接口是隐式抽象的,主要用来定义功能.
接口中可以定义静态常量,抽象方法,静态方法,默认方法
一个接口能继承其它多个接口.
接口不能实例化对象
接口是要被类实现,一个接口可以被多个实现
当类实现接口的时候,类要实现接口中所有的抽象方法,否则,该类必须声明为抽象的类.
接口与实现类之间存在多态性

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值