java里面初始化对象的时候可以重写类里面的函数?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java里面初始化对象的时候可以重写类里面的函数?相关的知识,希望对你有一定的参考价值。
java在初始化对象的时候跟一个大括号,里面加上需要重写的方法
publicClassA a = new ClassA()
@override(这个也可以不带,要保证方法中的参数都一样)
//ClassA中需要重写的方法
publicvoid handleMessage(Message msg)
。。。
;
或者间接实例化一个接口,如
publicRunnable r = new Runnable()
public void run()
...
我在C++里面没见过可以这样的。有没有什么参考的博文提供一下?
搜索 匿名类 就可以找到一大堆本回答被提问者采纳 参考技术B 你说的是匿名内部类,其实这到了以后的看法会经常见到追问
非常谢谢你的解答,不过1楼已经给出答案了,分就给他了,非常感谢你!
面向对象:多态;
(强类型,如C#,里面能多态,弱类型,如js,里面不能多态)
分为两种:1.编译多态,比如函数重载
2.运行多态,
概念:当父类引用指向子类实例的时候,由于子类对父类的方法进行了重写,在调用该方法的时候表现出的不同就称为多态。
关键字:virtual --虚方法
override--重写(对父类的虚方法进行重写)
条件:必须要有继承,父类引用指向子类实例,子类必须对父类的方法进行重写
里氏代换原则:
如果有一个地方需要使用到父类对象,那么你可以将一个子类对象给他。
static void Main(string[] args)
{
DongWu dw = new Cat();
Dog d = new Dog();
China c = new China();
Console.WriteLine(ChiRen(c));
Console.ReadLine();
}
public static string CeShi(DongWu d)
{
return "ok";
}
public static string ChiRen(Ren r)
{
return "人类真好吃";
}
}
//partial class Ren
//{
// private string name;
// public string Name
// {
// get { return name; }
// set { name = value; }
// }
//}
class DongWu
{
public virtual string Eat() //虚方法
{
return "该动物在吃饭";
}
}
class Dog:DongWu
{
public override string Eat() //重写
{
return "狗正在吃骨头";
}
}
class Cat : DongWu
{
public override string Eat()
{
return "猫正在吃鱼";
}
}
class Ren
{
}
class China : Ren
{
}
以上是关于java里面初始化对象的时候可以重写类里面的函数?的主要内容,如果未能解决你的问题,请参考以下文章