Java抽象类

Java抽象类

抽象类产生的原因

有些类中我们无法完整地进行描述,因此需要抽象

抽象类的声明

abstract class 类名{ // 抽象类
}

抽象方法

只声明而未实现的方法称为抽象方法(未实现指的是:没有“{}”方法体),抽象方法必须使用abstract关
键字声明。

abstract class 类名{ // 抽象类
public abstract void 方法名() ; // 抽象方法,只声明而未实现
}

抽象类的规范

在抽象类的使用中有几个原则:

  • 抽象类本身是不能直接进行实例化操作的,即:不能直接使用关键字new完成。

  • 一个抽象类必须被子类所继承,被继承的子类(如果不是抽象类)则必须覆写(重写)抽象类中的全
    部抽象方法。

    例如:定义一个抽象类:

    public abstract class People {
    	abstract void say();
    }
    

    直接定义类继承会报错:

    public class Student extends People{
    }
    

    应该改为抽象类继承或实现抽象类的全部抽象方法:

    //方式1
    public abstract class Student extends People{
    }
    //方式2
    public class Student extends People{
    	void say() {
    	}
    }
    
  • 抽象类不能使用final声明,因为抽象类必须有子类实现抽象方法才有意义。

  • 抽象类可以有构造方法,子类对象实例化的时候的流程与普通类的继承是一样的,都是要先调用父类中的
    构造方法(默认是无参的),之后再调用子类自己的构造方法。

抽象类与普通类的不同点

  • 抽象类必须用public或procted 修饰(如果为private修饰,那么子类则无法继承,也就无法实现其
    抽象方法)。默认缺省为 public。
  • 抽象类不可以使用new关键字创建对象, 但是在子类创建对象时, 抽象父类也会被JVM实例化。
  • 如果一个子类继承抽象类,那么必须实现其所有的抽象方法。如果有未实现的抽象方法,那么子类也必
    须定义为 abstract类

eclipse中使用向导快速创建抽象类

首先定义一个抽象类People:

package Demo;
public abstract class People {
	abstract void say();
}

sEyOR1.png
sEyvM6.png
sEyXxx.png

通过以上操作,就自动生成了一个新的类Student,并重写了抽象父类的所有抽象方法:

package Demo;

public class student extends People {
	@Override
	void say() {
		// TODO Auto-generated method stub
	}
}

@Override标识

此标识用于检查标记下面的方法是否重写了抽象类,如果方法名称写错了就会报错

例如:父类中的抽象方法是say(),子类中写成了say1()
sE6ao4.png

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值