Main类里面:
/**
*/
public class Main {
public static void main(String[] args) {
Animal animalDog = new Dog();
Animal animalCat = new Cat();
animalCat.eat();
animalDog.eat();
if(animalCat instanceof Cat)
{
Dog dog = (Dog)animalCat;
}
}
}
/**
animal类
*/
/*
* 抽象类与抽象方法:
1.抽象方法和抽象类必须使用abstract 修饰类定义,有抽象方法的类只能被定义成抽象类,抽象类中可以没有抽象方法
2.抽象方法和抽象类的使用规则:
1)使用abstract关键字来修饰定义抽象类;抽象方法中不能有方法
2)抽象方法不能实例化,不能使用new关键字创建类的实例
3)抽象类可以包含成员变量,方法(普通方法和抽象方法),构造器,内部类(接口,枚举)5种成分
4)含有抽象方法的类只能被定义成抽象类
C++中:
含有纯虚函数的类为抽象类;C++中规定抽象类型将不能再定义对象
例如:
class cclassA{
public:
virtual void fun_a()=0;
}
int main (){
cclassA objA;//error!!!不允许使用抽象类型的对象
}
* */
public abstract class Animal {
int nAge;
String strName;
//普通方法
public void eat()
{ System.out.println("Animal->eat()");}
//内部类
class Inner{
}
//抽象方法,只能用默认和public修饰
abstract void Sleep();
}
/**
Cat类
*/
public class Cat extends Animal{
@Override
public void eat() {
System.out.println("Cat->eat()");
}
@Override//没有sleep上面会报错!
void Sleep() {
}
}
cat类:
public class Dog extends Animal {
@Override
public void eat() {
System.out.println("Dog--->eat");
}
@Override
void Sleep() {
}
}