一、类的继承
1、什么是类的继承?
类的继承就是某一个类可以通过extends关键字继承另一个类中的方法和属性。
2、为什么要进行类的继承?
有时我们要定义一个新的类,可能会发现这个类中的属性和方法有很大一部分就是我们在另外一个类中定义的全部属性和方法。这时重新再输入一次未免有些费事费力,而使用继承的话,则可以省去这一步。在编程过程中,继承可以为我们省下很多事。
3、继承的语法格式
public class 子类名 extends 父类名{
}
4、在使用继承中应注意的问题
(1)一个子类只可以有一个父类,即单继承
(2)不是父类中所有属性和普通方法都可被子类使用,此时可分两种情况:一、子类与父类在同一个包中:子类可使用除了用private定义以外的所有普通方法与属性。二、子类与父类不在一个包中:子类只可使用父类中用public定义的属性和普通方法。
5、方法的重写
可以在子类中对父类中的方法进行重写,但是访问修饰符,返回值类型,方法名,参数类型,参数名,参数顺序都必须一样。此时用子类对象优先调用的方法是子类的,若没有重写,优先调用的则是父类中的方法。
方法重写后,若想优先调用父类方法,可用:super.方法名();
6、自动转型
用父类类型变量名来引用子类对象,格式一般为:
父类名 对象名 = new 子类名;
自动转型后,用对象名.方法名(),还是优先调用子类中的方法。但需注意,转型后,不可调用子类中独有的方法。
用如下程序进行说明:
//建立一个父类
public class Cars {
String name;//姓名属性
//定义获得姓名属性值的方法
public String getName(){
return name;
}
//定义设置姓名属性值的方法
public void setName(String name){
this.name = name;
}
}
//建立一个Bike子类,继承Cars类
public class Bike extends Cars {
}
//建立一个MotorBike子类,继承Cars类
public class MotorBike extends Cars {
}
//建立一个Person类作为动作的发起者
public class Person {
String name="我";//定义骑车对象
//定义获得姓名属性值的方法
public String getName(){
return name;
}
//定义设置姓名属性值的方法
public void setName(String name){
this.name = name;
}
//定义骑车方法
public void rideCars(Cars c){
System.out.println(getName()+"骑"+c.getName());
}
}
public class Ride {
//程序的入口函数
public static void main(String[] args) {
// 实例化一个Person类对象
Person p = new Person();
// 实例化一个电动车对象,并自动转型
Cars mb = new MotorBike();
// 设置电动车名字
mb.setName("MotorBike");
// 调用骑车方法
p.rideCars(mb);
// 实例化一个单车对象,并自动转型
Cars b = new Bike();
// 设置单车名字
b.setName("Bike");
// 调用骑车方法
p.rideCars(b);
}
}
在程序的编写过程中,我发现了一个问题:子类不可继承父类的构造函数,但如果父类中有一个或多个构造方法,那么子类中至少要有一个和父类中构造方法有相同参数的构造方法。
二、 接口
当我们定义一个类时,无非是两种目的:或是实例化生成对象,调用类中的属性和方法;或是作为一个父类被继承。在第二种情况下,有时需要子类重写父类中的所有方法,这就需要用到接口了。
可以借助电脑的USB接口来理解接口的概念,USB接口是已设计好固定好的,但是许多功能不同的设备却可以通过同一个USB接口来与电脑建立连接。也就是说实现了同一个接口的类或接口,可以获得属于这个接口的方法。
1、那么在程序怎样定义一个接口呢?
首先要明确的是,定义接口的关键字是interface。
具体格式如下:
public interface 接口名{
//接口中的属性为常量
public static final 数据类型 常量名=值;
//定义接口中方法(抽象方法)
public [abstract] 返回值数据类型 方法名(数据类型 参数类型,……);
}
从以上的格式可以看出,接口中的方法是没有方法体,也就是说接口中没用任何方法的具体实现,因此,不可用接口直接创建对象。需要注意的是,接口中默认的访问修饰符为public。
2、接口的实现
实现接口的关键字为implements
格式:public class 类名 implements 接口,……{
}
一个类可以实现多个接口,在实现接口时必须实现接口中的所有方法。
三、 抽象类
抽象类是介于类和接口之间的定义,在抽象类中可以有已实现的方法,也可以有像接口中一样没有实现的方法。
1、抽象类定义
关键字:abstract class
格式:public abstract class 抽象类名{
访问修饰符 数据类型 属性名;
访问修饰符 类名(数据类型 参数名,……){
//方法体
}
访问修饰符 返回值数据类型 方法名(数据类型 参 数名,……){
//方法名
}
//抽象方法
访问修饰符 返回值数据类型 abstract方法名(数据类型 参 数名,……);
}
由于抽象类中有抽象方法,自然也就不能直接创建对象。
2、抽象类的继承
用extends关键字实现继承。一个类只能继承一个抽象类,且必须实现抽象类中所有抽象方法。
3、抽象类的应用
有时我们只需用到某个接口的某些而不是全部方法,如果直接实现接口的话就要定义许多空方法。此时,若使用抽象类就可以用哪个方法则重写哪个方法了。
分享到:
相关推荐
1.继承及继承实例 2.方法重写(Overwrite) 3.super关键字 4.方法重载(Overload) 5.final修饰符 6.abstract修饰符 7.抽象类 8.接口 9.接口和抽象类对比 10.接口和抽象类使用场合实例 11.总结
一个student类,lectureTeatre类,继承抽象module类,通过继承来实现接口
抽象类_接口_多态_继承整合案例.。
JAVA 继承基本类、抽象类、接口区别与联系
一个使用了接口,抽象类,继承的JAVA类,模拟了计算机的组装过程
Java抽象类和接口和继承之间关系 Java抽象类和接口和继承之间关系
\\java类、抽象类、接口、继承和对象解析 .doc
采用普通类,接口,和抽象类实现单继承和多继承增,删,改,查,本人做的绝对完完善!!
java 抽象类与接口的练习,包括代码及注释,个人笔记
类、抽象类、接口、继承和对象(java).doc类、抽象类、接口、继承和对象(java).doc类、抽象类、接口、继承和对象(java).doc类、抽象类、接口、继承和对象(java).doc类、抽象类、接口、继承和对象(java).doc类、抽象类...
例如,Struct就可以继承接口,而不能继承类。 通过相同与不同的比较,我们只能说接口和抽象类,各有所长,但无优略。在实际的编程实践中,我们要视具体情况来酌情量才,但是以下的经验和积累,或许能给大家一些...
4.实现抽象类和接口的类必须实现其中的所有方法。 抽象类中可以有非抽象方法。接口中则不能有实现方法。如果接口或者抽象类的子类不想实现则继续携程一个抽象方法 5.接口中定义的变量默认是public static final ...
本项目主要包括项目开发环境搭建、不同功能的类的设计、抽象类的设计、接口的设计、及其继承抽象类重写和接口实现类等具体功能的实现。 ●工程项目搭建与游戏初始化功能实现(2学时) ; ●动物城成员列表与动物信息...
抽象类和接口的区别 【概述】 一个软件设计的好坏,我想很大程度上取决于它的整体架构, 而这个整体架构其实就是你对整个宏观商业业务的抽象框架,当代表业务逻辑的高层抽象层结构 合理时, 你底层的具体实现...
接口与抽象类的区别 抽象方法是必须实现的方法。就象动物都要呼吸。但是鱼用鳃呼吸,猪用肺呼吸。 动物类要有呼吸方法。...总之,在许多情况下,接口确实可以代替抽象类,如果你不需要刻意表达属性上的继承的话。
精选几道java继承及接口的实例
(3) 接口可以被多重实现,抽象类只能被单一继承 (4) 抽象类更多的是定义在一系列紧密相关的类间,而接口大多数是关系疏松但都实现某一功能的类中 (5) 抽象类是从一系列相关对象中抽象出来的概念, 因此反映的是事物...
第五章[1].包、继承、抽象类以及接口
接口和抽象类,抽象类必须有子类抽象类必须被继承
第5章-Java类的继承、抽象类和接口.doc