抽象类使用练习
abstract class Animal{ //抽象父类
Animal(){
System.out.println("Animal的无参构造被调用");
}
Animal(int i){
System.out.println("有有参构造器被调用");
}
public abstract void eat(); //子类实现此抽象方法时,修饰符的权限必须大于抽象类public>protected>default>private
abstract void bark();
public void aaaa() { //抽象类可以有自己的非抽象方法
System.out.println("aaaaaa");
}
}
class Dog extends Animal{
public void eat() {
System.out.println("啃骨头");
}
protected void bark(){
System.out.println("狗可以吠叫");
}
}
class Cat extends Animal{ //Cat类继承Animal抽象类,必须实现抽象类中的抽象方法,同时也可以有自己的方法
public void eat() {
System.out.println("吃鱼");
}
public void bark() {
System.out.println("喵喵叫");
}
public void ccc() {
}
public static class Test{ //静态类只能是内部类,在外部编译会报错
Test(){
System.out.println("静态内部类的无参构造被调用");
}
}
}
public class Abstranct_多态的表现形式之一抽象类{
static int j = 0;
int i = 0;
public static void main(String args[]){
Animal a = new Cat(); //父类的引用指向子类的对象
Animal b = new Dog();
show(a); //多态的表现形式之一:抽象方法,同一个方法传入不同的参数,表现不同的形式。另外两个是重写与接口
show(b);
Cat.Test t = new Cat.Test(); //静态内部类可以这样实例化
}
public static void show(Animal a) {
j = 9; //静态方法只能引用静态变量
// i = 9; //引用非静态变量时编译会报错
a.eat();
a.bark();
}
}
不积跬步无以至千里