目录
一 抽象类
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