抽象类和抽象方法
抽象方法:将共性方法抽取到父类之后,由于子类执行内容不同,所以在父类中不能确定具体方法,该方法定义为抽象方法。
抽象类:类中存在抽象方法的类声明为抽象类。
注:1,抽象类不一定有抽象方法,但有抽象方法的类一定是抽象类;
2,抽象类不能创建对象;
3,抽象类可以有构造方法;(为什么不能创建对象还要构造方法?答:为创建子类对象时给共有属性赋值);
4,抽象类的子类:①要么是抽象类(依旧不可创建对象),②要么重写抽象类中的所有抽象方法。
青蛙frog 属性:姓名,年龄 方法:吃虫子,喝水
狗Dog 属性:姓名,年龄 方法:吃骨头,喝水
山羊Sheep 属性:姓名,年龄 方法:吃草,喝水
测试类:
public class Main {
public static void main(String[] args){
Dog d=new Dog("小灰灰",1);
frog f=new frog("小小绿",1);
Sheep s=new Sheep("喜羊羊",10);
d.eat();
d.drink();
System.out.println("----------");
f.eat();
f.drink();
System.out.println("----------");
s.eat();
s.drink();
}
}
javabean类
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 void drink()
{
System.out.println(getName()+"喝水");
}
}
public class frog extends Animal{
public frog() {
}
public frog(String name, int age) {
super(name, age);
}
@Override
public void eat() {
System.out.println(getName()+","+getAge()+"岁,吃虫子");
}
}
public class Dog extends Animal{
public Dog() {
}
public Dog(String name, int age) {
super(name, age);
}
@Override
public void eat(){
System.out.println(getName()+","+getAge()+"岁,吃骨头");
}
}
public class Sheep extends Animal{
public Sheep() {
}
public Sheep(String name, int age) {
super(name, age);
}
@Override
public void eat(){
System.out.println(getName()+","+getAge()+"岁,吃草");
}
}
运行结果:
