多态是什么?
多态就是同一操作(方法)作用于不同的对象时,可以有不同的解释,产生不同的执行结果。
多态编程的好处
在父类写一个虚方法或抽象方法,子类去重写父类的方法,在调用的时候系统会根据对象运行时的类型决定调用哪个方法。
假设我们有一个“书”类,然后有很多子类继承“书”类。
例如“计算机组成原理”类继承“书类”,“深入Java面向对象”继承“书”类...
而这些子类都有类似的方法,即被不同的人使用
抽象类和抽象方法
abstract关键字:
abstract关键字用来修饰抽象类和抽象方法。
抽象类:
使用abstract关键字修饰的抽象类不能被实例化。
抽象类中可以有非抽象方法。
抽象类不能是密封的或者静态的。
抽象方法:
使用abstract关键字修饰的抽象方法是一个没有实现的方法,由子类重写抽象方法来实现。
抽象方法没有大括号,直接在小括号后以分号";"结尾。
含有抽象方法的类必须是抽象类。
抽象方法必须在其子类中实现,除非它的子类也是抽象类。
class Demo
{
List<Book> books = new List<Book>();
public void Test()
{
books.Add(new ComputerBook());
books.Add(new JavaBook());
//遍历时不用加判断
foreach (Book item in books)
{
item.ByReading();
}
}
}
abstract class Book
{
public abstract void ByReading();
}
class ComputerBook : Book
{
public override void ByReading()
{
println("我是计算机类书籍,被在校大学生使用。");
}
}
class JavaBook : Book
{
public override void ByReading()
{
println("我是Java书籍,被在业Java程序员使用。");
}
}
打印结果:
我是计算机类书籍,被在校大学生使用。
我是Java书籍,被在业Java程序员使用。