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++里面没见过可以这样的。有没有什么参考的博文提供一下?

参考技术A Java可以这面干,就是创建了一个匿名子类/实现类的实例。
搜索 匿名类 就可以找到一大堆本回答被提问者采纳
参考技术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里面初始化对象的时候可以重写类里面的函数?的主要内容,如果未能解决你的问题,请参考以下文章

java基础语法

java类创建时里面成员执行的先后顺序

面向对象:多态;

JAVA构造函数

java里面的 toString()方法重写是怎么回事啊?

如何能避免在调用子类对象的虚函数时调用父类的虚函数呢?