博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java语言基础(多态,抽象类,接口)
阅读量:3965 次
发布时间:2019-05-24

本文共 2431 字,大约阅读时间需要 8 分钟。

多态

1.什么是多态?

某一个事物,在不同时刻表现出来的不同状态。

父 f =  new 子();

2.多态的前提?

  • 要有继承关系。
  • 要有方法重写。 其实没有也是可以的,但是如果没有这个就没有意义。
  • 要有父类引用指向子类对象。

3.多态中的成员访问特点?

  • 成员变量
    编译看左边,运行看左边。
  • 构造方法
    创建子类对象的时候,会访问父类的构造方法,对父类的数据进行初始化。
  • 成员方法
    编译看左边,运行看右边。
  • 静态方法
    编译看左边,运行看左边。

4.多态的好处?

提高了代码的维护性(继承保证)

提高了代码的扩展性(由多态保证)

5.多态的弊端?

不能使用子类特有的功能

注意:如果需要使用子类

可以把父类的引用强制转换为子类的引用。(向下转型)
举例:

public class MyTest {
public static void main(String[] args) {
Animal an = new Dog(); an.eat(); Dog dog=(dog) Animal; dog.lookdoor(); an=new Cat(); an.eat(); }}class Animal{
public void eat(){
System.out.println("吃饭");}}class Cat extends Animal{
@Override public void eat() {
System.out.println("吃小鱼干");}}class Dog extends Animal{
@Override public void eat() {
System.out.println("狗吃骨头");} public void lookdoor(){
System.out.println("狗看门");}}

6.类型转换异常问题

两个类都继承于一个父类,但这两个类之间没有继承关系,当进行类型转换时会出现类型转换异常(java.lang.classCastException)

如何避免以上问题:使用instance of运算符

格式:(引用 instance of 数据类型名)结果:布尔类型true:表示引用所指向的对象是一个指定的数据类型false:不是指定的类型

抽象类

1.什么是抽象类?

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

2.抽象类的特点?

  • 抽象类和抽象方法必须用abstract关键字修饰
抽象类格式:  abstract class 类名 {
}
抽象方法格式: public abstract void eat();
  • 抽象类不一定有抽象方法,有抽象方法的类一定是抽象类
  • 抽象类中可以有构造方法,抽象类不能进行实例化
  • 抽象类的子类,要么是抽象类,要么重写抽象类中的所有抽象方法。

3.抽象类的成员特点?

  • 成员变量:既可以是变量,也可以是常量。
  • 构造方法:有。
    用于子类访问父类数据的初始化。
  • 成员方法:既可以是抽象的,也可以是非抽象的。

接口

1.什么是接口?

为了体现事物功能的扩展性,Java中就提供了接口来定义这些额外功能,并不给出具体实现。

2.接口的特点?

  • 接口用关键字interface表示
interface 接口名 {
}
  • 类实现接口用implements表示
class 类名 implements 接口名 {
}

3.接口成员特点?

  • 成员变量;只能是常量,并且是静态的。
    默认修饰符:public static final
  • 构造方法:接口没有构造方法。
  • 成员方法:只能是抽象方法。
    默认修饰符:public abstract

4.类与类,类与接口,接口与接口的关系?

a:类与类:

继承关系,只能单继承,可以多层继承。
b:类与接口:
实现关系,可以单实现,也可以多实现。
并且还可以在继承一个类的同时实现多个接口。
c:接口与接口:
继承关系,可以单继承,也可以多继承。

5.抽象类和接口的区别?

  • 成员区别
    抽象类:
    成员变量:可以变量,也可以常量
    构造方法:有
    成员方法:可以抽象,也可以非抽象
    接口:
    成员变量:只可以常量
    成员方法:只可以抽象
  • 关系区别
    类与类
    继承,单继承
    类与接口
    实现,单实现,多实现
    接口与接口
    继承,单继承,多继承
  • 设计理念区别
    抽象类 被继承体现的是:”is a”的关系。 抽象类中定义的是该继承体系的共性功能。
    接口 被实现体现的是:”like a”的关系。 接口中定义的是该继承体系的扩展功能。
    举例:
public class MyTest {
public static void main(String[] args) {
}}class Cat implements Fireinterface {
public void eat() {
} @Override public void fire() {
System.out.println("猫学会了钻火圈"); }}class Dog implements Fireinterface{
@Override public void fire() {
System.out.println("狗学会了钻火圈"); }}public interface Fireinterface {
public abstract void fire();}``

转载地址:http://gbfki.baihongyu.com/

你可能感兴趣的文章
Spring Batch 例子: 导入定长文件到数据库
查看>>
正则表达式
查看>>
Java I/O
查看>>
序列化
查看>>
Perl 精萃
查看>>
Perl 简介
查看>>
Perl 注释
查看>>
数据类型之标量
查看>>
调试 Perl 脚本
查看>>
增强的for循环语句
查看>>
静态导入
查看>>
java 泛型
查看>>
控制结构
查看>>
标准输入输出
查看>>
运算符
查看>>
数据类型之列表与数组
查看>>
比较字符串
查看>>
Java EE 精萃
查看>>
Open Source 精萃
查看>>
Java EE 简介
查看>>