本帖最后由 王德升 于 2012-6-3 23:15 编辑
//第一段代码。
abstract class Animal
{
public abstract void eat();
}
class Cat extends Animal
{
public void eat()
{
System.out.println("吃鱼");
}
public void catchMouse()
{
System.out.println("抓老鼠");
}
}
class Dog extends Animal
{
public void eat()
{
System.out.println("吃骨头");
}
public void kanJia()
{
System.out.println("看家");
}
}
class Pig extends Animal
{
public void eat()
{
System.out.println("吃饲料");
}
public void gongDi()
{
System.out.println("拱地");
}
}
class DuoTaiDemo1
{
public static void main(String[] args)
{
funcation(new Dog());
/*
Cat c1 = new Cat();
//c.eat();
//c.catchMouse();
funcation(c1);
//Dog d1 = new Dog();
funcation(new Dog());
Pig p = new Pig();
p.eat();
*/
}
public static void funcation(Cat c)
{
c.eat();
}
/*
public static void funcation(Dog d)
{
d.eat();
}
*/
}
1,上面为什么在主函数里面不能这样调用:funcation(new Dog1());?
但是funcation(d)却可以呢,为什么d1却是可以的呢。
2,上面的Cat,Dog,里面的特有方法可以私有吗?即private。
3,funcation加static是不是因为要被主函数调用,因为主函数是静态的,
所以它也要加静态的?
//第二段代码。
abstract class Student
{
public abstract void study();
public void sleep()
{
System.out.println("躺着睡");
}
}
class DoStudent
{
public void doSome(Student s)//为什么这里加不加静态都可以?都可以运行成功。
{
s.study();
s.sleep();
}
}
class BaseStudent extends Student
{
public void study()
{
System.out.println("base study");
}
public void sleep()
{
System.out.println("坐着睡觉");
}
}
class AdvStudent extends Student
{
public void study()
{
System.out.println("adv studay");
}
}
class DuoTaiDemo3
{
public static void main(String[] args)
{
DoStudent ds = new DoStudent();
ds.doSome(new BaseStudent());
ds.doSome(new AdvStudent());
//BaseStudent bs = new BaseStudent();
//doStudent(new BaseStudent());
//doStudent(new AdvStudent());
//bs.study();
//bs.sleep();
/*
AdvStudent as = new AdvStudent();
as.study();
as.sleep();
*/
}
/*
public static void doStudent(BaseStudent bs)//这里不加静态就会报错。这是为什么呢?
{
//BaseStudent bs = new BaseStudent();
bs.study();
bs.sleep();
}
public static void doStudent(AdvStudent as)
{
as.study();
as.sleep();
}
*/
}
//上面的主函数调用自己类中的方法时候要加静态,而调用外部类的时候加不加都行呢,为什么? |