abstract class Animal {
private String name;
Animal(String name) {this.name = name;} public void enjoy(){
System.out.println("叫声......");
}
public abstract void enjoy();
}abstract class Cat extends Animal {
private String eyesColor;
Cat(String n,String c) {super(n); eyesColor = c;}
public void enjoy() {
System.out.println("猫叫声......");
}
我自己理解成只要能重写 public void enjoy(){
System.out.println("叫声......");
}
他就是了 求指点
private String name;
Animal(String name) {this.name = name;} public void enjoy(){
System.out.println("叫声......");
}
public abstract void enjoy();
}abstract class Cat extends Animal {
private String eyesColor;
Cat(String n,String c) {super(n); eyesColor = c;}
public void enjoy() {
System.out.println("猫叫声......");
}
我自己理解成只要能重写 public void enjoy(){
System.out.println("叫声......");
}
他就是了 求指点
解决方案 »
- java udp接受原理是怎么样的,如果客户端很多向服务器发送数据包,服务器会不会丢失数据?
- J2SDK问题~~~
- 求教:Collection、Vector、Set、Map等各种集合类的特点和区别
- 请问一下 记事本的 撤消/自动换行功能 靠什么方法实现 先谢谢了啊
- 请教:如何播放wav格式的音频。。。。
- ::高分谁能讲讲genericservlet与httpservlet关系与区别
- toString()方法是怎么回事?我糊涂了?
- 我要为读写一个数据表做一个进度条如何做
- 60分相送:如何进行Client与Server间的HTTP通讯
- jdbc初级问题,快来抢分了
- 记事本文件菜单中“另存为”这段代码怎么写?求解!!!
- JTree右键弹出菜单,当文件夹展开时出问题?跪求大虾调试
public class Parent
{
public void printName()
{
System.out.println("parent");
}
}public class Son extends Parent
{
@Override
public void printName()
{
System.out.println("son");
}
}
public class Test
{
public static void main(String[] args)
{
Parent parent = new Son();
parent.printName(); //这时候 print 的结果是 "son";
//虽然是用父类引用,但是方法是指向子类的方向
}
}
因为子类是父类的一个类型
父类 父类的引用=new 子类();
List<String> list = new ArrayList<>();
类似于这行代码的意思,父类的引用 其实 就是指向子类的对象或者子类的实例的。也就是多态的用法,
用抽象类来指向具体的实现,实现变了,抽象定义可以不变,给程序带来良好的扩展性。
父类的引用指向了自己的子类对象。
父类的引用也可以接收自己的子类对象。
2,多态的前提
必须是类与类之间有关系。要么继承,要么实现。
通常还有一个前提:存在覆盖。3,多态的好处
多态的出现大大的提高程序的扩展性。4,多态的弊端:
虽然提高了扩展性,但是只能使用父类的引用访问父类中的成员。
举个简单的例子:多态和子类复写抽象方法就全明了:/*
需求:
电脑运行实例,
电脑运行基于主板。
*/
interface PCI
{
public void open();
public void close();
}//主板
class MainBoard
{
public void run()
{
System.out.println("mainboard run ");
} //这个方法就是说只要你实现了PCI接口你就能"插在我身上"
//PCI p = new NetCard(),接口型引用指向自己的子类对象,同理网卡也是
//注:你还可以建立更多的对象实现PCI接口丰富电脑配置
public void usePCI(PCI p)
{
//这里的P代表你传给他哪个对象,他就代表哪个对象对应的方法
if(p!=null)
{
p.open();
p.close();
}
}
}//网卡实现了PCI接口复写了他的方法
class NetCard implements PCI
{
public void open()
{
System.out.println("netcard open");
}
public void close()
{
System.out.println("netcard close");
method();
}
}//声卡实现了PCI接口复写了他的方法
class SoundCard implements PCI
{
public void open()
{
System.out.println("SoundCard open");
}
public void close()
{
System.out.println("SoundCard close");
}
}class MainBoardTest
{
public static void main(String[] args)
{
MainBoard mb = new MainBoard();
mb.run();
mb.usePCI(null);
mb.usePCI(new NetCard());
mb.usePCI(new SoundCard());
}
}
private String name;
Animal(String name) {this.name = name;} public void enjoy(){
System.out.println("叫声......");
}
public abstract void enjoy();
}可以写两个enjoy吗 我一开始觉得不行 放eclipse 还是编译出错
Duplicate method enjoy() in type Animal是不是视频里的例子?