什么是抽象函数,抽象类?
在java中,含有抽象方法的类称为抽象类,同样不能生成对象。
抽象类是不完整的,并且它只能用作
基类。它与非抽象类的不同:
1、抽象类不能直接实例化,并且对抽象类使用 new 运算符是编译时错误。虽然一些
变量和值在编译时的类型可以是抽象的,但是这样的变量和值必须或者为 null,或者含有对非抽象类的实例的引用(此非抽象类是从抽象类派生的)。
2、允许(但不要求)抽象类包含抽象成员。
3、抽象类不能被密封。
当从抽象类派生非抽象类时,这些非抽象类必须具体实现所继承的所有抽象成员,从而重写那些抽象成员。
抽象函数的格式
1.在一个普通类中定义抽象函数?
class Home{
String where;
//1.定义一个抽象方法,编译能否通过?
abstract void gohome();
/*输出
Test.java:1: error: Home is not abstract and does not override abstract method gohome() in Home
*///说明:说明抽象方法必须声明在抽象类内
}
public class Test{
public static void main(String[] args){
}
}
抽象类的规则
- 使用abstract定义的类称为抽象类
- 抽象类不能生成对象
- 如果一个类中包含抽象函数,那么这个类必须声明为抽象类
- 一个类中没有抽象函数,也可以声明为抽象类
- 抽象类是用来当爹的,用于被继承的,他的子类可以生成对象
- 抽象类可以有构造函数,是为子类调用时候准备的
1.尝试生成抽象类的对象?
//2.尝试用抽象类生成对象
abstract class Home{
String where;
abstract void gohome();
}
public class Test{
public static void main(String[] args){
//创建抽象类对象
Home yang=new Home();
/*输出:
Test.java:14: error: Home is abstract; cannot be instantiated
Home yang=new Home();
^
1 error
*///原因:抽象类内的方法是没有方法体的(没有实现部分),假设能创建对象,那么对象调用方法肯定出错
}
}
2.通过继承再生成对象?
//2.尝试用抽象类生成对象
abstract class Home{
String where;
abstract void gohome();
}
class Myhome extends Home{
//继承了抽象函数和成员变量
/*继承以后不写抽象类的实现则不能编译通过
原则之一:有抽象类必须声明为抽象类
*/
void gohome(){
System.out.println("我回家了");
}
}
public class Test{
public static void main(String[] args){
//子类对象
Myhome yang=new Myhome();
yang.gohome();
//用对象转型输出
Home wang=new Myhome();
wang.gohome();
}
}
3.抽象类可以有构造函数吗?
//2.尝试用抽象类生成对象
abstract class Home{
String address;
abstract void gohome();
//构造函数
Home(){
System.out.println("Home类 无参构造函数");
}
Home(String address){
System.out.println("Home类 有参构造函数 我家住"+address);
}
}
class Myhome extends Home{
//继承了抽象函数和成员变量
String city;
Myhome(){
super();
System.out.println("Myhome类 无参构造函数");
}
Myhome(String city,String address){
super(address);
this.city=city;
System.out.println("Myhome 有参构造函数 我家在"+city);
}
void gohome(){
System.out.println("我回家了");
}
}
public class Test{
public static void main(String[] args){
// 创建对象
Myhome one=new Myhome();
System.out.println();
Myhome sec=new Myhome("Guangxi","Baise");
}
}
分享到:
相关推荐
### Java学习资源汇总:从入门到精通 #### 引言 随着互联网技术的快速发展与迭代,Java作为一门经典的编程语言,依然占据着重要的地位。对于初学者或是希望提升技能的人来说,选择合适的在线学习资源至关重要。...
《菜鸟Java葵花宝典2017-2018》是一本专注于Java学习与面试的资源集合,旨在帮助初学者系统地掌握Java编程语言并为面试做好充分准备。这本书可能涵盖了Java的基础知识、进阶特性、设计模式以及常见面试问题等内容。...
### Java基础知识笔记详细版-菜鸟翻阅必备 #### 一、Java概述 1. **Java语言发展史**: - Java由Sun Microsystems公司于1995年推出。 - 最初由James Gosling领导的设计团队开发,目标是用于家用电器的编程。 - ...
### SAP自学学习笔记知识点概述 #### 一、配置总体框架 **1.1 系统环境** - **定义**: 指的是SAP系统的基本硬件和软件环境。 - **重要性**: 正确配置系统环境是确保SAP系统正常运行的基础。 - **涉及内容**: - ...
- **Java或Kotlin编程**:安卓应用的主要开发语言是Java或者更现代的Kotlin,因此源码可能由这两种语言之一编写。 - **Android SDK**:开发者会使用Android Software Development Kit (SDK) 来构建、调试和发布...
内容是C++面对对象的,目录大致来源于菜鸟文档的C++面向对象,笔记是参考各种文章以及菜鸟文档改编的,内容包含C++类和对象(类定义和对象定义,类成员函数,类访问修饰符,友元函数,内联函数,this指针,静态成员...
综上所述,面对JAVA面试,面试者应当注重技术基础的学习与积累,并在此基础上提升自己的综合能力,包括但不限于沟通技巧、团队协作能力等。同时,了解当前市场的薪资水平和公司招聘偏好有助于更好地定位自己,为未来...
-------------------------------安装方法: 本压缩包解压后上传到你的空间即可使用 管理登陆:admin/login.asp 管理ID: admin PASS : admin 相关数据库和数库链接文件 动画数据库:admin/manage/flash.asp 链接...
- 适合那些希望从零开始学习J2ME开发的人员,也适合有一定Java基础但对J2ME不熟悉的开发者。 #### J2ME英文原版编程书籍荟萃 - **专题地址**:[http://down.51cto.com/zt/90](http://down.51cto.com/zt/90) - **...
- **类与对象**:理解类与对象的基本概念及其关系,学会定义类和创建对象。 - **继承**:掌握类继承的概念,学会使用extends关键字实现继承。 - **封装**:了解封装的作用,掌握private、public、protected等访问...
- **面向对象编程**:Java是一种面向对象的语言,系统的核心会涉及类的设计,包括学生类、班级类、教师类等,每个类都会有自己的属性和方法。 - **控制结构**:如if-else语句、switch-case、for、while循环用于...
### Linux下Java与Tomcat配置详解 #### 一、引言 在Linux环境下配置Java运行环境及部署Tomcat服务器是一项常见的任务,对于初学者来说,掌握这一技能是必不可少的。本文将详细介绍如何在Linux系统中配置Java环境...
这份"java学习1-3课笔记"涵盖了初学者入门Java的基础知识,由张孝祥老师的课程内容整理而成,适合对编程感兴趣的菜鸟们作为学习参考资料。 1. **Java简介**: Java是由Sun Microsystems(现为Oracle Corporation的...
- **适用对象**:主要面向编程初学者和技术爱好者。 - **应用场景**: - **自学**:利用runoob提供的资源进行自我提升。 - **备课**:教师可以借助这些资源准备课程材料。 - **项目参考**:开发者在项目开发过程...
【JAVA初学者笔记:理解逻辑基础】 在编程领域,Java是一种广泛应用的高级编程语言,尤其适合初学者。本文将从基础出发,帮助你理解和掌握Java编程的基本概念。 首先,了解什么是程序。程序是一系列有序指令的集合...
安装方法: 本压缩包解压后上传到你的空间即可使用 管理登陆:admin/login.asp 管理ID: admin PASS : admin 相关数据库和数库链接文件 动画数据库:admin/manage/flash.asp 链接文件:admin/manage/conn....
### Java正则表达式大全:菜鸟也能玩转 在Java编程语言中,正则表达式是一种强大的工具,用于处理字符串的搜索、替换等操作。它能够帮助开发者更加灵活地进行文本处理工作。本文将深入介绍Java中的正则表达式基础...
- **《谁说菜鸟不会数据分析》**:这是一本基于Excel工具编写的数据分析教程书籍,采用通俗易懂的方式教授数据分析方法,适合初学者快速上手。 综上所述,以上提到的工具和服务覆盖了新浪微博营销的多个方面,从...