网站首页 > java教程 正文
抽象类
1.抽象类的概念
普通类可以直接产生实例化对象,并且在普通类之中可以包含有构造方法,普通方法、常量、变量等内容。而所谓的抽象类就是指在普通类的结构里面增加抽象方法的组成部分。
所有的普通方法上面都会有一个“{}”,该符号表示方法体,有方法体的方法一定可以被对象直接使用。而抽象方法指的是没有方法体的方法,同时抽象方法还必须使用abstract关键字定义。
拥有抽象方法的类一定属于抽象类,抽象类要使用abstract声明。
抽象类不能实例化。(类一旦被实例化则就可以调用类中的方法或属性,但是在抽象类中,没有方法,所以抽象类就不能被实例化。)
抽象类的使用规则:
抽象类必须有子类。即:每一个抽象类要被子类所继承。 抽象类的子类(子类不是抽象类)必须要覆写抽象类中所有的抽象方法、(一个子类只能继承一个抽象类,单继承) 抽象类的实例化需要依靠子类完成,采用向上转型的方法处理。 抽象类的相关限制
(1)由于抽象类里面会存在一些属性,那么在抽象类之中一定存在构造方法,其目的是为属性初始化。并且子类对象实例化的时候,依然满足于先执行父类构造,再调用子类构造的情况。
(2)抽象类不能够使用final定义,因为抽象类必须有子类,而final定义的类不能够有子类。
(3) 外部类不允许使用static声明,而内部的抽象类允许static声明。使用static声明的内部抽象类就相当于是一个外部抽象类,继承的时候使用“外部类.内部类”的形式表示类名称。
(4)在任何情况下,如果要执行类中的static方法的时候,都可以在没有实例化对象的时候直接调用。对于抽象类也是一样。
程序分析:
abstract class A {
public A(){//第二步
this.print();
}
public abstract void print();
}
class B extends A{
private int num = 100;
public B(int num){
this.num = num;
}
public void print(){//第三步
System.out.print("num = " + num);
}
}
public class TestDemo{
public static void main(String args[]){
new B(30);//第一步
}
}
程序输出结果:num = 0;
分析:
在任何一个类的构造执行完之前,所有属性的内容都是其对应数据类型的默认值。子类构造方法之前,一定先执行父类的构造方法。
猜你喜欢
- 2024-10-04 “全栈2019”Java第九十六章:抽象局部内部类详解
- 2024-10-04 JAVA笔记(十)面向对象——接口和抽象类
- 2024-10-04 Java抽象类与接口的区别(java抽象类与接口的区别是什么)
- 2024-10-04 Java接口和抽象类有什么共同点和区别?
- 2024-10-04 Java之路-08抽象类与接口(java抽象类入门教程)
- 2024-10-04 java基础——抽象类和接口(java抽象类和接口的使用场景)
- 2024-10-04 Java学习:基础(抽象类、模板方法模式、接口)
- 2024-10-04 Java学习:抽象方法和抽象类的使用
- 2024-10-04 Java中的抽象类与接口(java抽象类和接口的定义)
- 2024-10-04 java基础学习——abstract抽象类(java 抽象)
你 发表评论:
欢迎- 06-15Linux中如何通过Shell脚本来控制Spring Boot的Jar包启停服务?
- 06-15推荐一款超棒的SpringCloud 脚手架项目
- 06-15IDEA将项目打包成jar包(idea打包普通java项目)
- 06-15Spring Boot3 项目 jar 包打包成 Docker 镜像全攻略
- 06-15记录Dockerfile将jar包构建成部署所需的镜像
- 06-15项目基础部署汇总八---linux下xxl-job安装
- 06-15Spring Boot Jar 包秒变 Docker 镜像实现多环境部署
- 06-15终端执行 java -jar example.jar 时报错:“没有主清单属性” 的解决
- 最近发表
-
- Linux中如何通过Shell脚本来控制Spring Boot的Jar包启停服务?
- 推荐一款超棒的SpringCloud 脚手架项目
- IDEA将项目打包成jar包(idea打包普通java项目)
- Spring Boot3 项目 jar 包打包成 Docker 镜像全攻略
- 记录Dockerfile将jar包构建成部署所需的镜像
- 项目基础部署汇总八---linux下xxl-job安装
- Spring Boot Jar 包秒变 Docker 镜像实现多环境部署
- 终端执行 java -jar example.jar 时报错:“没有主清单属性” 的解决
- 如何将本地JAR文件添加到Maven项目中
- Java 类隔离应用:多 Jar 包支持(java接口隔离原则)
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)