博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于抽象和多态的总结
阅读量:5330 次
发布时间:2019-06-14

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

抽象

定义:

在某些情况下,类无法(或者没有必要)提供方法的具体实现,可以将此方法声明成抽象方法。使用关键字abstract声明抽象方法和类。

含有抽象方法的类,一定是抽象类。

抽象类只能用作基类。

子类必须实现其中所有的抽象方法。否则定义该子类为抽象类。

abstract不能修饰构造方法和静态方法。

作用:

1.类型隐藏。

2.优化程序。

多态

含义:

对外一种表现形式,内在有多种具体实现。

 

A  a   =  new  A();

“= ” 左边为编译期,进行校验

“=” 右边为运行期,执行程序

 

A类是B类的父类                              

A  ab   =  new  B();

在A类中编译,B类中运行。

称为父类引用指向子类对象。(向上造型)

此时a只能调用父类A中的方法。子类当中的新方法不能被调用。

 

B b = (B) ab;  (向下造型)

可以进行强转。

 

多态环境下对属性和方法的调用:

1.对成员方法的调用

//父类

class A{

void eat(){

System.out.println(“A”);

}

}

//子类

class B extends A{

void eat(){

System.out.println(“B”);

}

}

 

A x = new B();

x.eat(); //此时,调用的是子类B中的方法。

 

2.静态成员方法的调用

//父类

class A{

static void eat(){

System.out.println(“A”);

}

}

//子类

class B extends A{

static void eat(){

System.out.println(“B”);

}

}

 

A x = new B();

x.eat(); //此时,调用的是父类A中的方法。

3.成员变量的调用

//父类

class A{

int a = 1;

}

//子类

class B extends A{

int a = 2

}

 

A x = new B();

x.a; //此时,调用的是父类A中的方法。

 

多态参数:

作用:提高代码的扩展性

class A{

void eat(){

}

}

class B1 extends A{

    void eat() {

}

}

class B2 extends A{

     void eat(){

}

}

//构造一个以父类的对象为参数的方法,使用时可以是任何该父类的子类的对象。

method(A a){

a.eat();

}

instanceof

作用:

用于判断对象的具体类型。

if (a instanceof Cat) {

Cat c = (Cat) a;

c.catch();

}

如果对象a是类型Cat的一个实例,则 instanceof 运算符返回 true。如果对象不是指定类的一个实例,或者对象是 null,则返回 false

 

转载于:https://www.cnblogs.com/edwardli/p/7570862.html

你可能感兴趣的文章
迷宫问题
查看>>
【FZSZ2017暑假提高组Day9】猜数游戏(number)
查看>>
泛型子类_属性类型_重写方法类型
查看>>
eclipse-将同一个文件分屏显示
查看>>
mysql5.x升级至mysql5.7后导入之前数据库date出错的解决方法!
查看>>
对闭包的理解
查看>>
练习10-1 使用递归函数计算1到n之和(10 分
查看>>
Oracle MySQL yaSSL 不明细节缓冲区溢出漏洞2
查看>>
windows编程ASCII问题
查看>>
.net webService代理类
查看>>
Code Snippet
查看>>
Node.js Express项目搭建
查看>>
zoj 1232 Adventure of Super Mario
查看>>
1201 网页基础--JavaScript(DOM)
查看>>
组合数学 UVa 11538 Chess Queen
查看>>
oracle job
查看>>
Redis常用命令
查看>>
XML学习笔记(二)-- DTD格式规范
查看>>
IOS开发学习笔记026-UITableView的使用
查看>>
[转载]电脑小绝技
查看>>