JavaSE复习日记 : 抽象类
/*
* 抽象类
* 抽象:
* 面向对象的三大核心思想;
* 封装: 封装,ppp是封装的一部分
* 继承;
* 多态: 父类的引用指向子类的对象
* 引用: 是指一个引用型变量
* 有哪些变量?
* 成员变量;
* 构造方法的局部变量;
* 普通方法的局部变量;
* 立马声明立马使用的变量;
* 静态变量;
* 什么是抽象类?
* 就是用abstract关键字修饰的类就叫抽象类;
* 什么是抽象方法?
* 没有方法体的方法叫抽象方法,连{}都没有;抽象方法必须在修饰符列表中加上abstract这个关键字修饰;
* 继承于抽象类的类:
* 必须全部实现抽象类中的方法(就是加上方法体大括号),如果没有全部实现,就必须加上abstract修饰,即他也是个抽象类;
* 抽象类和抽象方法的关系:
* 含有抽象方法的类一定是抽象类;
* 抽象类却不一定有抽象方法;
* 抽象类没有抽象方法的目的:
* 为了让这个抽象类不能被实例化;
* 抽象方法的性质:
* 1 抽象方法不能被实例化(还有一种方法也不能让类实例化,那就是构造方法私有化,private)
* 2 虽然抽象方法不能被实例化,但是仍然有构造方法,这个是让子类创建对象用的(构造方法不能被继承,用super())
* 3 抽象类中不一定有抽象方法,但是抽象方法必须写在抽象类中
* 4 抽象类的继承类,必须把所有的抽象方法实现(全部需要加上方法体),否则子类还是个抽象类,需要用abstract修饰,也就是子类也不能直接被实例化
*
* 注意:抽象类是不能使用final修饰的,因为抽象类的目的就是为了继承,而final修饰的类不能被继承
* 抽象方法可以用final修饰吗?
* abstract和final不能同时出现,抽象方法不能用final修饰,因为抽象方法的目的是被覆写,而final修饰的方法不能被覆写;
*
* 还有就是,子类必须实现抽象类的所有的"抽象"方法才行,而不是用abstract修饰的方法呢?
* 关于这个,代码中可以看出来;
*
*/ public class JavaSE{
public static void main(String[] args){
A a = new C();//这里是多态,用于父类引用指向子类对象
a.move();
a.eat();
//再写一个
//A o = new A();//这里是会报错的,我上面写过,抽象类是无法被实例化的,A是抽象类吧,当然不能被实例化;
}
} abstract class A{//抽象类吧
public void eat(){//这个不是抽象方法吧,需要一定被覆写(实现)吗?
System.out.println( "这是一个抽象类" );
} public abstract void move();//注意:抽象方法是没有方法体的; A(){
System.out.println( "A的构造方法" );
}
} abstract class B extends A{//B没有覆盖(或者说实现)A里面的move()方法,所以他依旧是一个抽象类,需要加上abstract;
B(){
System.out.println( "B的构造方法" );
}
} class C extends B{//C实现了A里面的所有方法吧,所以不用abstract修饰;
C(){
super();
} public void move(){//A中的move()方法被覆写了
System.out.println( "C不是抽象类" );
}
}
JavaSE复习日记 : 抽象类的更多相关文章
- JavaSE复习日记 : 接口
		
/* * 接口 * 引用数据类型: * 类,接口,数组; * * 接口是一种引用数据类型,可以看作是一个特殊的类,它存在的目的是为了解决没有多重继承引起的功能弱的问题而设计的,一个类只能有一个父类,但 ...
 - JavaSE复习日记 : 算是个小前言吧
		
/* * Java也学了好久了,抽个时间整理了一下课堂笔记,也有些是我刚开始学会犯的一些错误.在这里浅谈一下JavaSE的基础内容,对我来说也是一种不错的复习方式. * * 那好,对于初学者来说,学习 ...
 - JavaSE复习日记 : 方法的调用和方法的重载
		
/* * 方法的调用和方法重载 */ /* * 什么是方法? * 方法就是一个有名字的代码段; * 方法的调用: * 在方法里调用另外一个方法里面的东西就是方法调用; * 或者可以认为"另外 ...
 - JavaSE复习日记 : 循环终止语句(break/break outerFor/continue)
		
最近没网,但攒了几天的博客,这次逮到机会发博客,直接三篇走起; /* * 循环终止语句: break/ break outerFor/ continue */ /* * break语句 * 1. 用于 ...
 - JavaSE复习日记 : 继承关系和super关键字以及继承关系中方法的覆写
		
/* * 类的继承和super关键字 * * 软件开发的三大目的: * 可拓展性; * 可维护性; * 可重用性; * * 这里单说下可重用性这一项: * 为了代码复用,复用方式有: * 函数的调用复 ...
 - JavaSE复习日记 : java包机制
		
这里是第一个文件,命名为JavaSE_01.java,我在这个文件里面声明了一个m1()方法,通过包机制,我将在另外一个文件夹里访问这个文件里的东西,确切的说是访问这个文件生成的一个class文件; ...
 - JavaSE复习日记 : 实例化对象/构造方法和this关键字
		
/* * 实例化对象/对象的构造方法/this关键字 */ /* * 实例化对象 * * 就是实例化某一个类; * 从不同角度去理解的话就是: * 1. 从人的认知角度: * 就是具体化某个东西; * ...
 - JavaSE复习日记 : 递归函数
		
/* * 递归函数 * 什么是递归? * 在一个方法的内部,对自身进行调用,又叫做递归调用 * * 递归和循环的编写都包括三部分: * 1. 初始值; * 2. 终止条件; * 3. 前进步长; * ...
 - JavaSE复习日记 : 循环语句(for/while/do while)
		
/* * 循环语句(for循环,while和do while循环) */ /* * for循环语句 * * for循环语法: * for (表达式1;表达式2;表达式3 ){ * java语句 * } ...
 
随机推荐
- 为SharePoint 2010中的FBA创建自定义登录页面
			
SharePoint 2010中默认的FBA登录页面非常简单,只提供了一个Asp.Net的Login控件,让用户输入用户名和密码.在大多数情况下,我们需要定制这个页面以满足一些安全需求,比如为登录页面 ...
 - Oracle EBS 如何月结[Z]
			
概述应付模块的多数业务基于采购和库存的操作,因此应付模块的月结应该在采购模块和库存模块月结后才能关闭会计期.月结步骤在每个会计期末,应付模块的月结应遵循以下流程:1.检查业务是否全部录入;2.检查是否 ...
 - 最近做OpenWrt的总结
			
用到了哪些东西 需要在OpenWrt上开发一个客户端,用C语言写还比较方便,最开始在linux上跑,后面移植到路由器上,做成ipk.除了稍微修改了下Makefile,其他的什么都没改. 因为需要做个配 ...
 - House Robber & House Robber II
			
You are a professional robber planning to rob houses along a street. Each house has a certain amount ...
 - ShowDialog()弹出的窗体,关闭后,主窗体会闪烁的BUG
			
如图,要实现下列等待界面时,等待界面是以ShowDialog弹出的,发现关闭后,主窗体会闪烁一下的BUG,搞半天没搞明白啥原因. 过了几天后,搜索了下发现,在fm.ShowDialog(),显示出来时 ...
 - Java学习之Java中常用对象
			
java的几种对象(PO,VO,DAO,BO,POJO)解释 一.PO:persistant object 持久对象,可以看成是与数据库中的表相映射的java对象.最简单的PO就是对应数据库中 ...
 - Windows 去掉启动时的放大镜
			
控制面板-轻松访问中心-使计算机更易于显示不勾选 启用放大镜
 - seajs 学习笔记
			
seajs的作者是玉伯,具体好处优点等详见官方网址 介绍 1 模块定义define define(function(require,exports,module){ //require 引入需要的模块 ...
 - Viewing the Raw SQL Statement(xcode で)
			
Thanks to Core Data. Even without learning SQL and database, you’re able to perform create, select, ...
 - [原创]反汇编之一:和Taskmgr过不去篇(无厘头版)
			
原文链接:和Taskmgr过不去篇(无厘头版) Hook入门级文章,主要想培养一下偶写文章的感觉,老鸟无视…我想看看技术文章能不能无厘头的写,如果效果不错的话,准备更上一层-----用我的原创漫画表达 ...