类的继承总结
1.为什么要继承?
有些类包含在某些类之中,如果每次都要定义重复的方法,这样做太麻烦,更不便于程序的
扩展,于是就有了继承,继承了某个父类的子类,在必要时就不需要重新定义父类中已经拥有的方法.
好处:
1.提高代码的重用性.
2.提高程序的扩展性
2.继承的格式
关键字:extends
格式:
piblic class 子类名 extends 父类名{
}
注意:一个类只能继承一个父类,即单继承.人只能有一个亲生父亲
3.子类继承到了什么属性和方法?
1.子类于父类在同包下
公有的,默认的,受保护的属性和方法都被继承
私有的属性和方法不能继承
2.子类和父类不在同一个包下
仅公有的属性和方法能被继承
4.方法的重写
条件:
1.方法的返回值类型,方法名,参数个数,参数类型,顺序等都要和父类方法相同
2.访问修饰符可以大于等于父类的
方法重写后优先调用子类的方法
5.自动转型
自动转型的前提是两个类中存在继承关系
格式一:
父类名 对象名 = new 子类构造函数(参数值,...);
格式二:
方法定义:
public 返回值类型 方法名(父类名 参数名){
//方法体
}
创建:
父类名 父对象名 = new 子类构造函数(参数值,...);
子类名 子对象名 = new 子类构造函数(参数值,...);
调用:
方法名(父类对象名);
方法名(子类对象名);
缺点:
无法调用子类中自定义的方法
不能调用时由于java编译机制引起的
优点:
可以使用父类类型的对象名去接收子类的对象
例如:只要定义了耳机插孔的大小,不论什么牌子颜色的耳机都能在MP3上使用
6.多态
是由方法重载,继承,方法重写,自动转型等引起的一系列问题
7.接口
关键字 interface
格式:
public interface 接口名[extends 接口名,...]{
//定义常量
public static final 数据类型常量名 = 值;
//定义抽象方法
public 返回值类型 方法名(数据类型 参数名,...)
}
注意:
1.接口中只能定义常量和抽象方法
2.接口默认且只能是public
3.接口可以继承多个接口
4.必须重写接口中所有的抽象方法
实现关键字:implements
public class 类名 extends 父类名 implements 接口名[,...]{
//必须要重写所有抽象方法
}
一个类只能先继承另一个类,然后才能实现接口
8.抽象类
定义抽象类关键字:abstract class
格式:
public abstract class 抽象类名{
//类和接口所有的都可以再抽象类中定义
public abstract 返回值类型 方法名(数据类型 参数名,...);
}
注意:抽象类和接口都是类的一种
类要继承抽象类用extends
抽象类继承类用extends,实现接口用imlpements
类和接口的区别
1.关键字不同
2.继承关键字不同
3.接口方法必须全部重写
4.接口的方法必须是公有抽象的,类可以是任意的,但必须要具体实现
5.接口不能定义构造函数
6.接口不能实例化对象,抽象类也不可以