抽象类的特点: 1.抽象类和抽象方法必须用abstract关键字修饰 public abstract class 类名 {} public abstract void eat (); 2.抽象类中不一定有抽象方法,但有抽象方法一定是抽象类 3.抽象类不能实例化 如何实例化?参照多态的方式,通过子类对象实例化,这叫抽象类多态。 4.抽象类的子类 要么重写抽象类的所有抽象方法 要么是抽象类
//抽象类
public abstract class Animal {
//抽象方法
public abstract void eat();
//非抽象方法
public void sleep(){
System.out.println("睡觉");
}
}
public class Cat extends Animal {
@Override
public void eat() {
System.out.println("猫吃鱼");
}
}
public class Dog extends Animal {
@Override
public void eat() {
System.out.println("狗吃骨头");
}
}
public class AnimalDemo {
public static void main(String[] args) {
Animal a = new Cat();
a.eat();
a.sleep();
Animal b = new Dog();
b.eat();
b.sleep();
}
}
猫吃鱼 睡觉 狗吃骨头 睡觉 抽象类成员的特点:
/*
抽象类
*/
public abstract class Animal {
private int age=30;
private final String city="北京";
public Animal(){}
public Animal(int age) {
this.age = age;
}
public void show() {
age=30;
System.out.println(age);
// city="上海"; 报错!!final原因
System.out.println(city);
}
//抽象
public abstract void eat();
}
public class Cat extends Animal {
@Override
public void eat() {
System.out.println("猫吃鱼");
}
}
/*
测试类
*/
public class AnimalDemo {
public static void main(String[] args) {
Animal a=new Cat();
a.eat();
a.show();
}
}
猫吃鱼 30 北京 案例猫和狗:
public abstract class Animal {
private String name;
private int age;
public Animal() { }
public Animal(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public abstract void eat();
}
public class Cat extends Animal {
public Cat() {}
public Cat(String name, int age) {
super(name, age);
}
@Override
public void eat() {
System.out.println("猫吃鱼");
}
}
public class Dog extends Animal{
public Dog() {
}
public Dog(String name, int age) {
super(name, age);
}
@Override
public void eat() {
System.out.println("狗吃骨头");
}
}
public class AnimalDemo {
public static void main(String[] args) {
//创建对象,按照多态的方式
Animal a=new Cat();
a.setName("加菲");
a.setAge(5);
System.out.println(a.getName()+","+a.getAge());
a.eat();
System.out.println("----------");
Animal c=new Cat("加菲",5);
System.out.println(c.getName()+","+c.getAge());
c.eat();
}
}
希望大家批评指正
谢谢大家~