关于abstract的基本知识

/*
 * 1.用abstract关键字来修饰一个类时,这个类叫做抽象类
 * 用abstract关键字来修饰一个方法时,这个方法叫做抽象方法
 * 2.含有抽象方法的类必须声明为抽象类,抽象类就是用来被继承的,抽象方法必须被重写
 * 3.抽象类不能被实例化
 * 4.抽象方法只需声明不需要实现
 */
abstract class Animal {
 private String name;

 Animal(String name) {
  this.name = name;
 }

 public abstract void enjoy();// 4.
}

class Dog extends Animal {
 private String furColor;

 Dog(String n, String c) {
  super(n);
  furColor = c;
 }

 public void enjoy() {
  System.out.println("狗叫声......");//2.抽象类就是用来被继承的,抽象方法必须被重写
 }
}

abstract class Cat extends Animal {
 private String eyesColor;

 Cat(String n, String c) {
  super(n);
  eyesColor = c;
 }  
}

 

class Bird extends Animal {
 Bird() {
  super("bird");
 }

 public void enjoy() {
  System.out.println("鸟叫声......");
 }
}

class Lady {
 private String name;
 private Animal pet;

 Lady(String name, Animal pet) {
  this.name = name;
  this.pet = pet;
 }

 public void myPetEnjoy() {
  pet.enjoy();
 }
}

public class Test {
 public static void main(String args[]) {
  // Cat c = new Cat("catname","blue");//3.
  Dog d = new Dog("dogname", "black");
  Bird b = new Bird();  
  Lady l2 = new Lady("l2", d);
  Lady l3 = new Lady("l3", b);
  l2.myPetEnjoy();
  l3.myPetEnjoy();
 }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值