栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java 抽象类[详解]

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java 抽象类[详解]

抽象类 抽象方法的概念
  • 抽象的反义词是具体,抽象也就是不能具体

抽象方法就是指不能具体实现的方法,抽象方法没有方法体且要使用abstract关键字修饰

抽象方法使用时的语法格式

访问权限修饰符 abstract 返回值类型 方法名();

  • 没有方法体

eg:public abstract void cry;

(如上就是描述了一个动物叫声的抽象方法)

抽象类的概念

抽象类就是不能具体实例化的类,也就是不能创建对象,并且要使用abstract关键字修饰

关于抽象类的注意事项

1.抽象类中可以定义成员变量,成员方法和构造方法.

2.抽象类中可以有抽象方法也可以没有抽象方法

3.有抽象方法的类一定是抽象类

  • 注意:严格来说,只有具有抽象方法且用abstract关键字修饰的类才是真正的抽象类

  • 抽象类不能创建对象是因为担心新手程序员通过创建对象而去调用抽象类中的抽象方法(因为抽象方法没有方法体,也就是没有实际意义,所以调用了也没有用)

实际意义

抽象类的实际意义不在于创建对象,而在于"被继承",当一个继承抽象类之后,要么重写这个抽象类中的抽象方法,要么这个继承的类也要定义为抽象类(也就是抽象类对子类有强制性和规范性)

  • 强制性:强制性就是这里的子类必须要重写抽象类的抽象方法,或者这个类就也要变成抽象类
  • 规范性:规范性就是子类要重写抽象类中的抽象方法,所以就要遵守方法重写的规范

方法重写的规范:

1.权限修饰符可以不变,也可以换成访问权限更高的权限修饰符

2.返回值类型也要相同或者是返回子类类型

3.方法名一样

4.参数列表相同

模板设计模式

出现抽象类的场合我们就叫模板设计模式

多态的使用场合:

场合一:通过参数的传递来实现多态,也就是实参给形参的传递形成多态

public Shape{



}
publi Circle extends Shape{

​ public static void show(Shape s){

​ s.print();

​ }

}

public TextShape{

​ public static void main(String[] args){

​ Shape.show(new Circle());

​ }

}

场合二:

在方法体中直接使用父类的引用指向子类的对象而完成多态的使用

eg:

public Shape{

​ public staitc void main(String[] args){

​ Shape s=new Circle();

​ }

}

经验分享:

在以后我们使用继承的时候(包括抽象类的使用,因为抽象类就是为了继承),我们一般有两种创建对象的方式:

方式一(基础创建方式):

​ SubAbstract sub=new SubAbstract();

​ 这种方式就是使用子类的引用指向了子类的对象

方式二(进阶版创建方式):

​ Abstract abs=new SubAbstract();

​ 这种方式就是使用父类的引用指向了子类的对象(也就是使用了多态)

  • 在以后的使用当中我们推荐使用第二种创建对象的方式,也就是使用多态创建的方式,

使用第二种创建方式的优点:

因为当父类的引用指向了子类的对象时父类所调用的子类的所有方法都一定是父类都有的方法,那么要调用另一个子类的同一种方法时我们只需要修改new关键字之后的部分即可,也就是修改new后面对应子类的构造方法即可调用另一个子类的方法了,而其他地方则无需修改,“从而提高了代码的可维护性”

使用第二种创建方式的缺点:

当要调用子类所独有的方法时就要进行向下转型(也就是引用类型的转换)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/425009.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号