`
incyanggan
  • 浏览: 34048 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

Java菜鸟学习笔记--面向对象篇(十一):&abstract方法/类

 
阅读更多

什么是抽象函数,抽象类?

在java中,含有抽象方法的类称为抽象类,同样不能生成对象。

凡是包含纯虚函数的类都是抽象类。

抽象类是不完整的,并且它只能用作基类。它与非抽象类的不同:

1、抽象类不能直接实例化,并且对抽象类使用 new 运算符是编译时错误。虽然一些变量和值在编译时的类型可以是抽象的,但是这样的变量和值必须或者为 null,或者含有对非抽象类的实例的引用(此非抽象类是从抽象类派生的)。

2、允许(但不要求)抽象类包含抽象成员。

3、抽象类不能被密封。

当从抽象类派生非抽象类时,这些非抽象类必须具体实现所继承的所有抽象成员,从而重写那些抽象成员。





抽象函数的格式


  • 只有函数的定义,没有函数体的函数
  • abstract void fun();


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){		

	}
}




抽象类的规则



  1. 使用abstract定义的类称为抽象类
  2. 抽象类不能生成对象
  3. 如果一个类中包含抽象函数,那么这个类必须声明为抽象类
  4. 一个类中没有抽象函数,也可以声明为抽象类
  5. 抽象类是用来当爹的,用于被继承的,他的子类可以生成对象
  6. 抽象类可以有构造函数,是为子类调用时候准备的



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");
	
	}
}
























作者:YangGan
出处:http://blog.csdn.net/incyanggan
本文基于署名 2.5 中国大陆许可协议发布,欢迎转载,演绎或用于商业目的,但是必须保留本文的署名Yanggan(包含链接).

分享到:
评论

相关推荐

    java学习类网站,让你有菜鸟变高手

    ### Java学习资源汇总:从入门到精通 #### 引言 随着互联网技术的快速发展与迭代,Java作为一门经典的编程语言,依然占据着重要的地位。对于初学者或是希望提升技能的人来说,选择合适的在线学习资源至关重要。...

    菜鸟Java葵花宝典2017-2018

    《菜鸟Java葵花宝典2017-2018》是一本专注于Java学习与面试的资源集合,旨在帮助初学者系统地掌握Java编程语言并为面试做好充分准备。这本书可能涵盖了Java的基础知识、进阶特性、设计模式以及常见面试问题等内容。...

    Java基础知识笔记详细版-菜鸟翻阅必备

    ### Java基础知识笔记详细版-菜鸟翻阅必备 #### 一、Java概述 1. **Java语言发展史**: - Java由Sun Microsystems公司于1995年推出。 - 最初由James Gosling领导的设计团队开发,目标是用于家用电器的编程。 - ...

    菜鸟的SAP自学学习笔记

    ### SAP自学学习笔记知识点概述 #### 一、配置总体框架 **1.1 系统环境** - **定义**: 指的是SAP系统的基本硬件和软件环境。 - **重要性**: 正确配置系统环境是确保SAP系统正常运行的基础。 - **涉及内容**: - ...

    安卓快递跟踪信息查询 急速版.zip

    - **Java或Kotlin编程**:安卓应用的主要开发语言是Java或者更现代的Kotlin,因此源码可能由这两种语言之一编写。 - **Android SDK**:开发者会使用Android Software Development Kit (SDK) 来构建、调试和发布...

    C++学习笔记- 面向对象 .md

    内容是C++面对对象的,目录大致来源于菜鸟文档的C++面向对象,笔记是参考各种文章以及菜鸟文档改编的,内容包含C++类和对象(类定义和对象定义,类成员函数,类访问修饰符,友元函数,内联函数,this指针,静态成员...

    JAVA菜鸟面试题库

    综上所述,面对JAVA面试,面试者应当注重技术基础的学习与积累,并在此基础上提升自己的综合能力,包括但不限于沟通技巧、团队协作能力等。同时,了解当前市场的薪资水平和公司招聘偏好有助于更好地定位自己,为未来...

    猪猪FLASH频道

    -------------------------------安装方法: 本压缩包解压后上传到你的空间即可使用 管理登陆:admin/login.asp 管理ID: admin PASS : admin 相关数据库和数库链接文件 动画数据库:admin/manage/flash.asp 链接...

    【J2ME经典珍藏】48个推荐资料+40个经典源码——下载目录

    - 适合那些希望从零开始学习J2ME开发的人员,也适合有一定Java基础但对J2ME不熟悉的开发者。 #### J2ME英文原版编程书籍荟萃 - **专题地址**:[http://down.51cto.com/zt/90](http://down.51cto.com/zt/90) - **...

    基于Java语言教程&案例&相关项目资源

    - **类与对象**:理解类与对象的基本概念及其关系,学会定义类和创建对象。 - **继承**:掌握类继承的概念,学会使用extends关键字实现继承。 - **封装**:了解封装的作用,掌握private、public、protected等访问...

    Java学生管理系统——菜鸟

    - **面向对象编程**:Java是一种面向对象的语言,系统的核心会涉及类的设计,包括学生类、班级类、教师类等,每个类都会有自己的属性和方法。 - **控制结构**:如if-else语句、switch-case、for、while循环用于...

    linux下java和tomcat配置 非常详细 适合菜鸟)

    ### Linux下Java与Tomcat配置详解 #### 一、引言 在Linux环境下配置Java运行环境及部署Tomcat服务器是一项常见的任务,对于初学者来说,掌握这一技能是必不可少的。本文将详细介绍如何在Linux系统中配置Java环境...

    java学习1-3课笔记

    这份"java学习1-3课笔记"涵盖了初学者入门Java的基础知识,由张孝祥老师的课程内容整理而成,适合对编程感兴趣的菜鸟们作为学习参考资料。 1. **Java简介**: Java是由Sun Microsystems(现为Oracle Corporation的...

    runoob菜鸟教程网站镜像

    - **适用对象**:主要面向编程初学者和技术爱好者。 - **应用场景**: - **自学**:利用runoob提供的资源进行自我提升。 - **备课**:教师可以借助这些资源准备课程材料。 - **项目参考**:开发者在项目开发过程...

    JAVA初学者笔记 使用JAVA理解逻辑基础-菜鸟入门(简单易懂)

    【JAVA初学者笔记:理解逻辑基础】 在编程领域,Java是一种广泛应用的高级编程语言,尤其适合初学者。本文将从基础出发,帮助你理解和掌握Java编程的基本概念。 首先,了解什么是程序。程序是一系列有序指令的集合...

    猪猪FLASH频道.rar

    安装方法: 本压缩包解压后上传到你的空间即可使用 管理登陆:admin/login.asp 管理ID: admin PASS : admin 相关数据库和数库链接文件 动画数据库:admin/manage/flash.asp 链接文件:admin/manage/conn....

    java 正则表达式大全 菜鸟也能玩转

    ### Java正则表达式大全:菜鸟也能玩转 在Java编程语言中,正则表达式是一种强大的工具,用于处理字符串的搜索、替换等操作。它能够帮助开发者更加灵活地进行文本处理工作。本文将深入介绍Java中的正则表达式基础...

    新浪微博营销

    - **《谁说菜鸟不会数据分析》**:这是一本基于Excel工具编写的数据分析教程书籍,采用通俗易懂的方式教授数据分析方法,适合初学者快速上手。 综上所述,以上提到的工具和服务覆盖了新浪微博营销的多个方面,从...

Global site tag (gtag.js) - Google Analytics