类的继承和接口
1.编写程序过程中,为什么要使用类的继承?
1)提高代码的重用性
2)提高程序的扩展性
举个例子: 你写了一个学生类,声明了名字、性别等属性以及学习等方法
public class Student{
private String name;
private String sex;
...
public void study(){...}
...
}
现在你要写一个大学生类,也包含了名字、性别等属性以及学习等方法,那么你就可以通过继承Student类来避免再次写重复的代码
public class UNStudent extends Student{
private String major;
public void play(){...}
}
而且,你可以在子类中定义父类没有的属性和方法,也就是提高了代码的扩展性
2.继承的语法格式
Java继承的关键字是:extends
格式:
public class 子类名 extends 父类名{}
3.子类继承父类后,子类从父类中继承到了那些属性和方法?又能调用那些属性和方法?
1)首先,子类继承父类后,子类是能继承到父类所有的方法和属性的。
2)那么,子类能调用父类所有的方法和属性吗?
(1)如果子类和父类在同一个包目录下:
只有声明为:private 的方法和属性是不能调用的
也就是说,能调用的有:public protected 以及默认的方法和属性
(2)如果子类和父类不在同一个包目录下:
能调用的方法和属性:public protected
不能调用的方法和属性:默认的 private
特别地,如果调用发生时,不是在子类中,而是在其他地方(比如主函数或其他类中),那么只有public的方法和属性才能调用。
4.方法的重写
1)程序编写过程中为什么要用到方法重写?
当子类继承了父类的某个方法,但这个方法在子类中又要与父类有不同的表现时(比如说,一个大学生类UNStudent继承了学生类Student的学习study()方法,但是大学生的学习方法又与一般的高中生、初中生不同),那么就需要用到方法的重写。
2)方法重写的条件:
(1)必须要有继承关系。也就是说方法的重写只会发生在继承了父类的子类中
(2)子类中重写的方法与父类中被重写的方法相比:返回值类型,方法名,参数列表(参数个数,参数类型,参数顺序)必须要完全一致。
3)方法重写的调用
1)必须是子类的对象
2)优先调用子类的方法,如果子类中没有重写,才会调用父类的方法。
5.自动转型
所谓自动转型就是指在继承关系中,所有的子类对象,自动的也都是父类类型。例如:某个具体的一个大学生,他除了是大学生,也可以被称之为学生;而一个学生,不一定是大学生,也可以是小学生或者中学生等等。大学生(子类对象)是学生(父类类型),反之则不成立。
使用自动转型,会遇到一个小问题:无法调用子类的方法(父类中没有的方法,也就是不是重写的方法)。这是由Java的编译机制引起的:在使用自动转型时,Java编译只会根据对象名的类型去检索对对应的方法名,因为父类中没有该方法,因而检索不到而报错!
解决办法: 在父类中定义一个空方法,使之成为重写就ok了。
自动转型的使用: 一般是作为方法的参数,如果参数的类型为父类类型,那么该方法就可以接受所有子类的对象参数。
6.多态
所谓多态,是指相同类型(比如子类自动转型成为父类类型)的对象调用相同的方法的时候,由于继承和重写的机制,得到不同的结果。
7.接口
定义接口的关键字是: interface
格式:
public interface 接口名 extends 接口名,...{
//定义常量
public static final 数据类型 常量名 = 值;
...
//定义抽象方法
public 返回值类型 方法名 (参数类型 参数名,...);
...
}
定义类实现接口,关键字:implements
实现格式:
public class 类名 implements 接口名,...{
//必须实现接口中所有的抽象方法
}
类个接口的区别:
1)关键字:类的定义关键字为 class,接口的关键字为 interface;
2)继承:类只能有一个继承父类,为单继承;接口可以继承多个接口,为多继承;
3)属性:类中可以定义各种属性,包括定义常量;接口只能定义常量属性;
4)方法:类中定义的方法必须实现;接口中只能定义抽象方法,必须不实现;
5)子类:父类的子类可以重写父类的方法,也可以不重写;继承了接口的类,必须重写实现接口的所有抽象方法;
6)对象:类可以实例化对象;接口不能实例化对象。
8.抽象类
定义的关键字:abstract class
格式:
public abstract class 抽象类名 extends 类名或抽象类名 implements 接口名,...{
// 和类一样定义属性和方法
// 和接口一样定义常量和抽象方法,格式稍有不同
public abstract 返回值类型 方法名(参数类型 参数名,...);
}
继承了抽象类的子类,如果父类定义了抽象方法,必须重写实现至少一个抽象类方法。
抽象类是介于类和接口之间的一个特殊类。
分享到:
相关推荐
Java编程实训 Java开发基础入门教程1-04 面象对象编程初步-类和对象(共54页).ppt Java编程实训 Java开发基础入门教程1-05 面向对象编程-封装(共21页).ppt Java编程实训 Java开发基础入门教程1-06 面向对象编程-...
Java编程实训 Java开发基础入门教程1-04 面象对象编程初步-类和对象(共54页).ppt Java编程实训 Java开发基础入门教程1-05 面向对象编程-封装(共21页).ppt Java编程实训 Java开发基础入门教程1-06 面向对象编程-...
Java语言接口与继承的本质 java 语法
Java编程实训 Java开发基础入门教程1-04 面象对象编程初步-类和对象(共54页).ppt Java编程实训 Java开发基础入门教程1-05 面向对象编程-封装(共21页).ppt Java编程实训 Java开发基础入门教程1-06 面向对象编程-...
Java编程实训 Java开发基础入门教程1-04 面象对象编程初步-类和对象(共54页).ppt Java编程实训 Java开发基础入门教程1-05 面向对象编程-封装(共21页).ppt Java编程实训 Java开发基础入门教程1-06 面向对象编程-...
Java编程实训 Java开发基础入门教程1-04 面象对象编程初步-类和对象(共54页).ppt Java编程实训 Java开发基础入门教程1-05 面向对象编程-封装(共21页).ppt Java编程实训 Java开发基础入门教程1-06 面向对象编程-...
Java编程实训 Java开发基础入门教程1-04 面象对象编程初步-类和对象(共54页).ppt Java编程实训 Java开发基础入门教程1-05 面向对象编程-封装(共21页).ppt Java编程实训 Java开发基础入门教程1-06 面向对象编程-...
Java编程实训 Java开发基础入门教程1-04 面象对象编程初步-类和对象(共54页).ppt Java编程实训 Java开发基础入门教程1-05 面向对象编程-封装(共21页).ppt Java编程实训 Java开发基础入门教程1-06 面向对象编程-...
Java基础入门教程 Java编程技术05 继承和多态(2学时)(共40页).ppt Java基础入门教程 Java编程技术06 类的高级特征(4学时)(共55页).ppt Java基础入门教程 Java编程技术07 异常(2学时)(共27页).ppt Java基础入门...
Java编程实训 Java开发基础入门教程1-04 面象对象编程初步-类和对象(共54页).ppt Java编程实训 Java开发基础入门教程1-05 面向对象编程-封装(共21页).ppt Java编程实训 Java开发基础入门教程1-06 面向对象编程-...
完整版精品java课件 Java基础入门教程 Java程序设计 第5章 继承和接口(共47页).ppt 完整版精品java课件 Java基础入门教程 Java程序设计 第6章 数组和集合(共44页).ppt 完整版精品java课件 Java基础入门教程 Java...
1. 内置数据类型 2. string类 3. 数组 4. 循环分支 5. 工具类(数据容器、日期、正则表达式……...8. JAVA继承 1. 抽象类与抽象方法 2. JAVA接口 3. JAVA泛型编程 4. JAVA序列化 5.JAVA网络与多线程 6. JAVA类生命周期
继承(下) 抽象类 接口 抽象类 抽象类概述 抽象类的特点 抽象类举例代码讲解 抽象类相关问题
Java SE编程入门教程 java入门以及变量debug(共63页).pptx Java SE编程入门教程 java设计模式(共17页).pptx Java SE编程入门教程 java数组(共33页).pptx Java SE编程入门教程 java网络编程(共29页).pptx ...
第2篇为Java语言高级语法,包括类、对象、方法、继承、多态、修饰符、接口、抽象类、内部类、Java异常处理和多线程编程。第3篇为Java语言编程进阶,包括Java编程常用知识、Java文件编程、Java文件I/O编程、Java TCP...
完整版精品java课件 Java基础入门教程 Java程序设计 第5章 继承和接口(共47页).ppt 完整版精品java课件 Java基础入门教程 Java程序设计 第6章 数组和集合(共44页).ppt 完整版精品java课件 Java基础入门教程 Java...
Java SE编程入门教程 java入门以及变量debug(共63页).pptx Java SE编程入门教程 java设计模式(共17页).pptx Java SE编程入门教程 java数组(共33页).pptx Java SE编程入门教程 java网络编程(共29页).pptx ...
1.6.2 抽象的基础类和接口 1.7 对象的创建和存在时间 1.7.1 集合与继承器 1.7.2 单根结构 1.7.3 集合库与方便使用集合 1.7.4 清除时的困境:由谁负责清除? 1.8 违例控制:解决错误 1.9 多线程 1.10 永久性 1.11 ...
Java基础入门教程 Java编程技术05 继承和多态(2学时)(共40页).ppt Java基础入门教程 Java编程技术06 类的高级特征(4学时)(共55页).ppt Java基础入门教程 Java编程技术07 异常(2学时)(共27页).ppt Java基础入门...
一一击破Java入门可能会遇到的难点和疑惑 抽丝剥茧,层层推进,让知识环环相扣,降低了学习的难度 通过大量的比喻、类比、对比和图示等多种讲解方式,学习效果好 对Java语言的每个语法都提供了一个或多个例程讲解 ...