java抽象类

定义抽象类 Animal 

package com.zthl.abstracts;
/*
 * 1、抽象类中可以没有抽方法;
 * 2、抽象类中既可以有抽象方法,也可以有普通方法;
 * 3、一个类中只要有一个抽象方法,那么这个类就必须是抽象类;
 * 4、一个类继承一个抽象类必须重写所有的抽象方法,否则这个类就是抽象类;
 * 5、抽象类可以作为参数传递;
 * 6、当方法的参数是抽象类或者接口时,调用这个方法需要抽象类的子类或者接口的实现类。
 */
public abstract class Animal {

	public abstract void eat();
	
	public abstract void sleep();
	
	public void classes(){
		System.out.println("所有动物组成一个动物世界!");
	}
}


Dog 类继承抽象类 Animal 


package com.zthl.entity;

import com.zthl.abstracts.Animal;

public class Dog extends Animal {

	private static final String DOG = "旺财";
	@Override
	public void eat() {
		System.out.println(DOG+",喜欢吃骨头!");
	}

	@Override
	public void sleep() {
		System.out.println(DOG+",睡在狗窝里!");
	}

	public void privateBehavior(){
		System.out.println(DOG+",嗅觉灵敏,可以被训练为警犬!");
	}
}


Cat 类继承抽象类 Animal 


package com.zthl.entity;

import com.zthl.abstracts.Animal;

public class Cat extends Animal {

	/**
	 * 1、static修饰的数据在一个对象中修改后,共享数据区中的数据就会被修改;
	 * 2、final修饰的变量、方法、类不可被修改;
	 * 3、static final修饰的数据为常量。
	 */
	private static final String CAT = "喵喵";
	
	@Override
	public void eat() {
		System.out.println(CAT+",平时睡在房梁上!");
	}

	@Override
	public void sleep() {
		System.out.println(CAT+",特别喜欢吃鱼!");
	}
	
	public void privateBehavior(){
		System.out.println(CAT+",会抓老鼠!");
	}

}


测试类 TestDog


package com.zthl.Test;

import org.junit.Test;

import com.zthl.abstracts.Animal;
import com.zthl.entity.Dog;

public class TestDog {

	@Test
	public void testA() {
		Animal a=new Dog();
		a.eat();
		a.sleep();
		a.classes();
		
		//旺财,喜欢吃骨头!
		//旺财,睡在狗窝里!
		//所有动物组成一个动物世界!
	}
	
	@Test
	public void testD() {
		Dog d=new Dog();
		d.eat();
		d.sleep();
		d.privateBehavior();
		d.classes();
		
		//旺财,喜欢吃骨头!
		//旺财,睡在狗窝里!
		//旺财,嗅觉灵敏,可以被训练为警犬!
		//所有动物组成一个动物世界!
	}

}

测试类 TestCat 


package com.zthl.Test;

import org.junit.Test;

import com.zthl.abstracts.Animal;
import com.zthl.entity.Cat;

public class TestCat {

	@Test
	public void testA() {
		Animal a=new Cat();
		a.eat();
		a.sleep();
		a.classes();
		
		//喵喵,平时睡在房梁上!
		//喵喵,特别喜欢吃鱼!
		//所有动物组成一个动物世界!
		
	}

	@Test
	public void testc() {
		Cat c=new Cat();
		c.eat();
		c.sleep();
		c.privateBehavior();
		c.classes();
		
		//喵喵,平时睡在房梁上!
		//喵喵,特别喜欢吃鱼!
		//喵喵,会抓老鼠!
		//所有动物组成一个动物世界!
	}
	
}


抽象类可以作为参数传递


package com.zthl.Test;

import com.zthl.abstracts.Animal;
import com.zthl.entity.Dog;
/*
 * 5、抽象类可以作为参数传递
 */
public class TestParam {

	public static void main(String[] args) {
		TestParam tp=new TestParam();
		tp.est(new Dog());
		
		//旺财,喜欢吃骨头!
	}
	
	public void est(Animal a){
		a.eat();
	}
}





  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值