JAVA——面向对象——抽象类和抽象方法abstract

Posted 叶不修233

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA——面向对象——抽象类和抽象方法abstract相关的知识,希望对你有一定的参考价值。

JAVA——面向对象——抽象类和抽象方法abstract

一、抽象类和抽象方法的概念

1.产生背景:
继承原本设计出来的用法是,子类继承父类的属性和方法。
但由于现在项目都是多人合作,继承更多用于规范代码,使代码统一。
(抽象)父类相当于一个模板的作用,不再定义属性,而是用来定义(抽象)方法名。
抽象方法只能定义在抽象类里。
2.抽象类和抽象方法的特点:
1、抽象类不能被创建对象,只能作为父类被子类继承
2、抽象方法没有方法体,只能被子类重写
3、一般父类定义成抽象类,不定义属性,方法中也没有方法体
4、子类的属性在子类中定义,抽象类的子类强制继承父类的抽象方法
3.语法(都用abstract修饰)
抽象类:

	public abstract class 类名 

抽象方法

	public abstract void 方法名(); 

二、抽象类和抽象方法的举例

抽象类-父类:Animal01
抽象类中定义了抽象方法:eat()

/**
 * 新建一个动物类(抽象类)
 * @author z
 *
 */
public abstract class Animal01 
	//定义抽象方法eat(),给Animal创建子类时,子类就必须继承并重写这个方法
	//作用是在多人合作的情况下,达到了方法名的强制统一效果
	public abstract void eat(); 
	//定义抽象方法run(),给Animal创建子类时,子类就必须继承并重写这个方法
	public abstract void run();
	

具体类-子类Dog01

/**
 * 新建一个狗狗类继承父类(动物类)
 * 父类是抽象类,子类就会强制重写父类的抽象方法
 * @author z
 *
 */
public class Dog01 extends Animal01

	//子类的属性在子类中定义,不再从父类中继承
	private String name;
	private String color;
	private int age;
	
	//子类的构造方法
	public Dog01(String name,String color,int age) 
		this.name = name;
		this.color = color;
		this.age = age;
	
	
	public void setName(String name) 
		this.name = name;
	
	public String getName() 
		return name;
	
	
	public void setColor(String color) 
		this.color = color;
	
	public String getColor() 
		return color;
	
	
	public void setAge(int age) 
		this.age = age;
	
	public int getAge() 
		return age;
	
	
	//子类强制重写父类的抽象方法
	public void eat() 
		System.out.println("狗吃骨头");
	
	//子类强制重写父类的抽象方法
	public void run() 
		System.out.println("狗伸着舌头跑步");
	

	//子类自有的方法
	public void lookHome() 
		System.out.println("看家。");
	


具体类-子类:Cat01

/**
 * 新建一个猫猫类继承父类(动物类)
 * 父类是抽象类,子类就会强制重写父类的抽象方法
 * @author z
 *
 */
public class Cat01 extends Animal01
	
	private String name;
	private String color;
	private int age;
	private String sex;
	
	public Cat01(String name,String color,int age,String sex)
		this.name = name;
		this.color = color;
		this.age = age;
		this.sex = sex;
	
	
	
	public void setName(String name) 
		this.name = name;
	
	public String getName() 
		return name;
	
	
	public void setColor(String color) 
		this.color = color;
	
	public String getColor() 
		return color;
	
	
	public void setAge(int age) 
		this.age = age;
	
	public int getAge() 
		return age;
	
	
	public void setSex(String sex) 
		this.sex = sex;
	
	public String getSex() 
		return sex;
	
	
	//强制重写父类的抽象方法
	public void eat() 
		System.out.println("猫吃鱼。");
	
	
	//强制重写父类的抽象方法
	public void run() 
		System.out.println("猫走猫步。");
	
	
	//子类自有的方法
	public void catchMouse() 
		System.out.println("抓老鼠。");
	


测试这两个子类创建对象和调用方法

package com.yebuxiu.lesson01ChouXiangLei;
/**
 * 新建一个主类
 * 用来根据刚刚定义的狗狗类、猫猫类来创建对象,调用方法
 * @author z
 *
 */
public class Lesson01 

	public static void main(String[] args) 

		//new一个狗狗对象
		Dog01 d1 = new Dog01("狗子一号","黑色",3);
		
		//new一个猫猫对象
		Cat01 c1 = new Cat01("猫猫一号","白色",3,"母");
		
		//调用方法
		d1.eat();
		d1.run();
		d1.lookHome();
		
		c1.eat();
		c1.run();
		c1.catchMouse();

	



以上是关于JAVA——面向对象——抽象类和抽象方法abstract的主要内容,如果未能解决你的问题,请参考以下文章

Java面向对象(14)_抽象类和抽象方法

Java面向对象—抽象类和接口

廖雪峰Java2面向对象编程-4抽象类和接口-1抽象类

java--面向对象重点

Java面向对象之抽象类

java面向对象- 抽象类和接口