javaEE基础08
javaEE基础08
一、继承
特点:继承父类的属性和方法,单继承(多继承)
特性:方法的复写(重写)
比如:人可以养狗
人------>狗:整体和部分(拥有)关系
关键字:extends
结构: A类 extends B类:A类继承B类
继承中所要注意的事项:
1.不要为了继承而继承
2.父类的私有变量(方法)不能够被继承
3.父类的构造函数不能被继承
4.子类在调用自己的构造方法时,会默认先调用父类的无参构造方法
5.对于super的调用必须是构造器中的第一个语句
6.子类不能继承不在一个包中默认权限的成员
什么时候使用继承:
两个类之间必须要满足is a关系,才能拥有继承关系。
二、super关键字
Super:指向父类对象的引用空间
Super关键字的作用:
1.当子类和父类存在同名的成员变量时,可以通过super来调用父类的成员变量
2.Super可以用来调用父类的构造方法
|
public Zi(String color, String name,int age){ //用super来调用父类的构造方法 super(name,age); //必须是构造器中的第一个语句 this.color = clolr; } |
Super使用的主要事项:
1.用super调用父类的构造方法,必须是构造方法中的第一个语句
2.Super只能出现在子类的方法和构造方法中
3.Super和this不能同时调用构造方法(因为两者都必须要在第一个语句)
Super和this的区别:
1.代表的事物不一样:
this:所属方法调用者对象
super:表示父类对象的引用空间
2.使用前提不一样:
super:只能在继承的条件下才能使用
This:在非继承条件下也可以使用
3.调用构造方法:
super:调用父类的构造方法
this:调用本类的构造方法
二、重写
方法的复写作用:
父类的方法满足不了子类的实现,就需要通过复写方法实现父类的行为
方法的重写使用注意点:
1.方法重写,必须存在继承关系
2.方法重写,方法名和形式参数必须一致
3.方法重写,子类的权限修饰符必须要大于或者等于父类的权限修饰符
4.方法重写,子类的返回值类型必须小于或等于父类的返回值类型
5.方法重写,子类的异常类型要小于等于父类的异常类型
基本数据类型:上下级不明确,因此基本数据类型在第4点不成立
方法重载:
方法名一样:参数列表个数、类型以及顺序不一样
三、关键字
instanceof(实例类型)关键字作用:
1.用来判断某个对象是否属于某一个类
2.Instanceof:使用前提对象指定的类有继承关系或实现关系
final关键字:
1.如果用final修饰基本数据类型变量,改变了就不能重新赋值,第一次的结果就为最终的结果(final修饰的变量必须要初始化)
2.如果用final修饰引用数据类型,无法给引用数据类型变量赋值
3.如果用final修饰方法,方法就不能被重写
4.如果用final修饰类,类就不能被继承
如何用final表示常量
|
例:public final static double PI = 3.14; //变量名要大写 |
格式: public final static 基本数据类型 变量名
abstract关键字:
被abstract修饰的类就叫做抽象类
被abstract修饰方法叫做抽象方法
如果一个类继承了抽象类,必须要实现抽象类中的抽象方法
Abstract关键字的使用:
1.如果一个方法没有方法体(大括号的内容即方法体),那么这个方法必须要abstract修饰
2.如果一个类中有抽象方法,那么这个类必须要abstract修饰,为抽象类
3.如果一个非抽象类,继承了这个抽象类,那么这个非抽象类中必须重写所有的抽象方法
4.一个抽象类是可以拥有非抽象方法的
5.一个抽象类可以拥有构造方法,作用是让子类能够初始化父类中的变量
6.抽象类不能创建对象
原因:如果创建对象,对象可能会调用到抽象方法,没有意义
7.一个抽象类中是可以不出现抽象方法的
|
例: abstract class Graph { //public Graph(){}; 默认有一个无参构造 abstract public void area(); } |
Abstract不能和:private、static、final使用
Abstract关键字什么时候使用:
在描述一个事物的时,发现该事物存在某种行为,但该行为又不具体,这种行为就叫做抽象行为,这时使用到抽象类
四、接口
例子:铅笔:带橡皮擦的铅笔
两个功能:1.写字----> 铅笔 2.擦字---->橡皮
现实:java是单继承,不能同时有两个功能
接口定义模式:
用interface关键字来表示接口
|
//定义一个擦字的接口 interface Eraser { int a = 10; //在接口中定义的变量必须初始化,接口中的变量是用final修饰的 //定义在接口中的方法是不需要实现的 public void clear();//默认是用abstract修饰的,接口中的方法都是抽象方法 } |
实现接口关键字 implements:
|
class EraserAndPencil implements Eraser, Pencil{ //在里面必须实现接口里的方法 } |
Java中可以支持多实现,一个类可以实现多个接口,多个接口在 implements 后面用逗号隔开
接口的作用:
1.用来拓展功能
2.让程序解耦
3.定义约束
接口的使用注意事项:
1.接口是一个特殊的类,可以定义属性和方法
2.属性默认用final修饰的:public static final int age = 10;实际上是一个常量
3.方法都是抽象的:abstract public
4.接口不能创建对象
5.接口没有构造方法
6.接口是给类去实现的非抽象类实现接口时,必须将接口中的方法都实现
|
interface Eraser { int a = 10; //在接口中定义的变量必须初始化,接口中的变量时用final修饰的 //定义在接口中的方法是不需要实现的 public void clear();//默认是用abstract修饰的,接口中的方法都是抽象方法 } |
类和接口的关系:实现关系
1.一个非抽象类实现接口,必须实现接口中的方法
2.一个抽象类实现接口,可以不实现接口中的方法,如果一个非抽象类继承抽象类,那么这个类需要实现这个接口中的所有方法
接口和接口之间存在继承关系,可以继承多个接口
javaEE基础08的更多相关文章
- 4. 什么是应用服务器? - JavaEE基础系列
本文是JavaEE基础系列的第四节. Java EE简介 - JavaEE基础系列 JSR简介 - JavaEE基础系列 什么是JSR参考实现? - JavaEE基础系列 上一节介绍了什么是JSR参考 ...
- 3. 什么是JSR参考实现? - JavaEE基础系列
本文是JavaEE基础系列的第三节. Java EE简介 - JavaEE基础系列 JSR简介 - JavaEE基础系列 上一节中, 我们介绍了什么是JSR.JSR就是一个提交到JCP的抽象请求,包含 ...
- 2.JSR简介 - JavaEE基础系列
JSR, Java Specification Request, Java规范请求; 也有的地方翻译为Java规范提案. 在前面的文章 1. Java EE简介 - JavaEE基础系列中, 简要介绍 ...
- 转:攻击JavaWeb应用[1]-javaEE基础
http://www.cnblogs.com/oh3o/p/3224562.html JSP: 全名为java server page,其根本是一个简化的Servlet. Servlet:Servle ...
- JavaEE基础(十五)/集合
1.集合框架(对象数组的概述和使用) A:案例演示 需求:我有5个学生,请把这个5个学生的信息存储到数组中,并遍历数组,获取得到每一个学生信息. Student[] arr = new Student ...
- JavaEE基础(十一)/Eclipse介绍
1.Java开发工具(常见开发工具介绍) A:操作系统自带的记事本软件 B:高级记事本软件 C:集成开发环境 IDE (Integrated Development Environment) D:Ec ...
- JavaEE基础(九)
1.面向对象(多态的概述及其代码体现) A:多态(polymorphic)概述 事物存在的多种形态 B:多态前提 a:要有继承关系. b:要有方法重写. c:要有父类引用指向子类对象. C:案例演示 ...
- JavaEE基础(五)
1.Java语言基础(数组概述和定义格式说明) A:为什么要有数组(容器) 为了存储同种数据类型的多个值 B:数组概念 数组是存储同一种数据类型多个元素的集合.也可以看成是一个容器. 数组既可以存储基 ...
- JavaEE基础(四)
1.Java语言基础(循环结构概述和for语句的格式及其使用) A:循环结构的分类 for,while,do...while B:循环结构for语句的格式: for(初始化表达式;条件表达式;循环后的 ...
随机推荐
- js中类型识别的方法
第一种方法typeof typeof是一种运算符,它的值有以下几种 <!DOCTYPE html> <html lang="en"> <head> ...
- spring MVC入门教程
写一个spring mvc后台传值到前台的一个小例子. 分为以下几个步骤: 1.创建web项目. 导入项目包.具体有如下: spring-aop-4.0.4.RELEASE.jar spring-be ...
- C#面向对象设计模式纵横谈——2.Singleton 单件(创建型模式)
一:模式分类 从目的来看: 创建型(Creational)模式:负责对象创建. 结构型(Structural)模式:处理类与对象间的组合. 行为型(Behavioral)模式:类与对象交互中的职责分配 ...
- MySQL、Oracle和SQL Server的分页查询语句
假设当前是第PageNo页,每页有PageSize条记录,现在分别用Mysql.Oracle和SQL Server分页查询student表. 1.Mysql的分页查询: SELECT * FROM s ...
- bzoj2702[SDOI2012]走迷宫
题意:给你一个有向图,点数10000,边数1000000,SCC大小不超过100(按数据范围的写法只有第三部分数据满足这个条件,不过第二部分数据并没有出现大小大于100个点的SCC,我是用数组大小为1 ...
- iMac 打包
1.打包成 dmg 1.1.编译文件 打开工程文件之后选取Products,复制 "项目名.app" 到指定文件夹 1.2.打开磁盘工具(所有程序-> 实用工具 ->磁 ...
- fedora22,fedora24最简单的安装virtaulbox的方法
fedora为什么不好用呢? 1.因为很多软件没有预先安装,新手安装时,就无从下手了. 2.版本更新太快,有老手提供了解决方案,但是版本更新了,新手按照步骤来,就不能配置成功! 不抱怨了. 安装vir ...
- 懒加载(getter\setter理解)
为什么要用懒加载 1.首先看一下程序启动过程:(如图) 会有一个mian的设置,程序一启动会加载main.storyboard main.storyboard又会加载箭头所指的控制器 控制器一旦加载, ...
- Swift -Login(MVC 纯代码)
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 24.0px Menlo; color: #000000 } span.s1 { } span.s2 { c ...
- 关于java中自增,自减,和拓展运算符的小讨论
java中运算符很多,但是能深入讨论的不算太多.这里我仅仅以++,*=为例做讨论. 例:++ i=0; i=i++ + ++i;//i=1 i=++i+i++;//i=2 i=i++ -++i;//i ...