Java继承,多态,抽象类与接口(三)

目录

一   抽象类

1.1抽象类

1.2抽象方法

 1.3如何利用抽象类

 二   接口

  2.1什么是接口?

 2.2定义接口类


一   抽象类

1.1抽象类

   仅用来描述特征且极具抽象性类,在Java中定义为抽象类。

   比如我们定义了一个类为颜色类,但我们不知道它长什么样,以上7种颜色可能都不是,反而这7种颜色都属于颜色,像这种无法说清楚的,不知道到底长什么样的我们就称它为抽象类。在Java中用abstract修饰。

public abstract class Animal {
    // 抽象方法
    public abstract void eat();

    // 非抽象方法
    public void sleep() {
        System.out.println("Animal is sleeping");
    }
}
 

举个例子:

1.我们先创建一个抽象类Color,再定义两个子类。

public abstract class Color {//抽象类
	public void show() {
	}
}

class Red extends Color{//子类1
	public void show() {
		System.out.println("我是红色。");
	}
}

class Blue extends Color{//子类2
	public void show() {
		System.out.println("我是蓝色。");
	}
}

2.再到Demo类中创建对象。

public class Demo {
	public static void main(String[] args) {
	Color a=new Red();//红色
	a.show();
	Color b=new Blue();//蓝色
	b.show();
	

	}

}

3.运行结果。

 我们要注意不可以创建抽象类的对象。

 如图所示,不然机器会报错。

1.2抽象方法

    这种抽象方法只需要声明不需要实现。

定义抽象类的语法如下 

public abstract class Parent{
       abstract void testAbstract();//定义抽象方法
}

1.创建一个Teacher抽象类,再定义一个抽象方法 


public abstract class Teacher {//抽象类
	abstract public void teaching();//抽象方法	
	
}

class MathTeacher extends Teacher {
	public void teaching() {	
		System.out.println("这节课我们来讲《导数》");
	}
}

class EnglishTeacher extends Teacher{
	public void teaching() {
		System.out.println("open book to 25");
	}
}

 2.在Demo中创建对象。

public class Demo {
	public static void main(String[] args) {
	Teacher li=new MathTeacher();
	Teacher jack=new EnglishTeacher();
	li.teaching();
	jack.teaching();
	

	}

}

3.运行结果。 

 1.3如何利用抽象类

 

 1.创建抽象类动物类。

public abstract class Animal {//动物类
	public Animal() {
		System.out.println("创建了一个动物");
	}
	public abstract void eat();//定义抽象方法“吃”。
	public abstract void reprudoce();//定义抽象方法“繁殖”。

}

2.创建抽象类鸟类。

public abstract class Bird extends Animal{//抽象类鸟类
	String feather;//羽毛
	
	public Bird(String feather) {//构造函数
		System.out.println("创建了一个鸟类");
		this.feather=feather;
	}
	public void Growfeather() {//成员方法(长毛)
		System.out.println("长满了"+feather+"羽毛");
	}

	public abstract void move();//抽象方法(移动)
	
	public  void reprudoce() {//成员方法(繁殖)
		System.out.println("繁殖方式:下蛋.");
	}
}

3.创建类海鸥类。


public  class Seagull extends Bird{

	public Seagull(String feather) {
		super(feather);
		System.out.println("我是海鸥");
	}

	@Override
	public void move() {
		System.out.println("海鸥飞翔");
	}

	@Override
	public void eat() {
		System.out.println("海鸥吃鱼");
	}

}

4.创建对象。


public class Demo {
	public static void main(String[] args) {
	Seagull a= new Seagull("白色");
	a.eat();
	a.Growfeather();
	a.move();
	a.reprudoce();
	

	}

}

5结果。

 二   接口

  2.1什么是接口?

 接口是抽象类的延申,可以将它看作是纯粹的抽象类,接口中所有的方法都没有方法体。

 

比如我们有一个图形类,它有三个子类,同时四边形又有两个子类,子类中便可重写draw方法和doAnything方法,但我们出现了一个这样的需求,我们三角型类不需要这个draw方法,那么我们就必须把图形类的draw方法删掉。如果把图形类的draw方法删掉,那么其他类中的都会消失。

但是我四边型和n边型则需要这个draw方法该怎么办?我们这里运用接口。

 这样四边形和n变形便可以实现draw方法。

1.创捷接口。

public interface DrawInterface {
	public void draw();

}

 2.创建四边形类。

public class Qua implements DrawInterface{

	@Override
	public void draw() {
		System.out.println("绘制四边形");
	}

}

3.创建正方形类。


public class Square implements DrawInterface{

	@Override
	public void draw() {
		System.out.println("绘制正方形");
	}
	

}

4.Demo类

public class Demo {
	public static void main(String[] args) {
		DrawInterface d=new Qua();
		d.draw();
		DrawInterface f=new Square();
		f.draw();
		


	}

}

5.实现效果。

 2.2定义接口类

接口使用interface关键词进行定义,其语法如下

public interface Paintable{
   void draw();//定义接口方法可以省略public abstract关键字
}

interface:定义接口关键字。

paintable:接口名称。

 一个类继承一个父亲的同时再实现一个接口,可以写成如下形式:

public class Parallelogram extends Quadrangle implements Paintable{

.......

}

Java中不允许出现多重继承,但使用接口就可以实现多重继承。一个类可以实现多个接口,因此可以将所有需要继承的接口放在implements关键词后,并使用逗号隔开。实现多个接口的语法如下,
 

 class  类名  implements 接口1,接口2,......接口n

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值