1.继承 在Java中,类的继承是指在一个现有类的基础上去构建一个新的类,构建出来的新类被称作子类,现有类被称作父类,子类会自动拥有父类所有可继承的属性和方法。
继承的格式&使用: 在程序中,如果想声明一个类继承另一个类,需要使用extends关键字。
格式: class 子类 extends 父类 {}
子类在继承父类的时候,会自动拥有父类的成员。
继承的好处:
1、继承的出现提高了代码的复用性,提高软件开发效率。
2、继承的出现让类与类之间产生了关系,提供了多态的前提。
在类的继承中,需要注意一些问题,具体如下:
1、在Java中,类只支持单继承,不允许多继承,也就是说一个类只能有一个直接父类2、多个类可以继承一个父类 3、在Java中,多层继承是可以的,即一个类的父类可以再去继承另外的父类,例如C类继承自B类,而B类又可以去继承A类,这时,C类也可称作A类的子类 4、在Java中,子类和父类是一种相对概念,也就是说一个类是某个类父类的同时,也可以是另一个类的子类。例如上面的这种情况中,B类是A类的子类,同时又是C类的父类。
继承-子父类中成员变量的特点
成员变量:如果子类父类中出现不同名的成员变量,这时的访问是没有任何问题。当子父类中出现了同名成员变量时,在子类中若要访问父类中的成员变量,必须使用关键字super来完成。super用来表示当前对象中包含的父类对象空间的引用。
在子类中,访问父类中的成员变量格式:
super.父类中的成员变量
1.子父类中成员方法的特点
当在程序中通过对象调用方法时,会先在子类中查找有没有对应的方法,若子类中存在就会执行子类中的方法,若子类中不存在就会执行父类中相应的方法。
成员方法特殊情况——覆盖
子类中出现与父类一模一样的方法时,会出现覆盖操作,也称为override重写、复写或者覆盖。
2.方法重写(覆盖)的应用:
当子类需要父类的功能,而功能主体子类有自己特有内容时,可以重写父类中的方法,这样,即沿袭了父类的功能,又定义了子类特有的内容。
在子类中,访问父类中的成员方法格式:
super.父类中的成员方法();
方法重写的注意事项
子类方法覆盖父类方法,必须要保证权限大于等于父类权限。
总结:当一个类是另一个类中的一种时,可以通过继承,来继承属性与功能。如果父类具备的功能内容需要子类特殊定义时,进行方法重写。
二.抽象类 分析事物时,发现了共性内容,就出现向上抽取。会有这样一种特殊情况,就是方法功能声明相同,但方法功能主体不同。那么这时也可以抽取,但只抽取方法声明,不抽取方法主体。那么此方法就是一个抽象方法。
抽象方法定义的格式: public abstract 返回值类型 方法名(参数);
抽象类定义的格式: abstract class 类名 { }
抽象类的特点:
1、抽象类和抽象方法都需要被abstract修饰。抽象方法一定要定义在抽象类中。 2、抽象类不可以直接创建对象,原因:调用抽象方法没有意义。 3、只有覆盖了抽象类中所有的抽象方法后,其子类才可以创建对象。否则该子类还是一个抽象类。
之所以继承抽象类,更多的是在思想,是面对共性类型操作会更简单。
3.接口:理解为是一个特殊的抽象类,但它不是类,是一个接口
接口的特点:
1,定义一个接口用interface关键字 interface Inter{}
2,一个类实现一个接口,实现implements关键字 class Demo implements Inter{}
3, 接口不能直接创建对象
通过多态的方式,由子类来创建对象,接口多态
接口中的成员特点:
成员变量:只能是final 修饰的常量
默认修饰符: public static final
成员方法:只能是抽象方法
默认修饰符: public abstract
类与类,类与接口,接口与接口之间的关系
类与类之间:继承关系,单继承,可以是多层继承
类与接口之间: 实现关系,单实现,也可以多实现
接口与接口之间:继承关系,单继承,也可以是多继承
Java中的类可以继承一个父类的同时,实现多个接口
4.多态:理解为同一种物质的多种形态
多态使用的前提:
1,有继承或者实现关系
2,要方法重写
3,父类引用指向子类对象
多态的成员访问特点:方法的运行看右边,其他都看左边
多态的好处:提高了程序的扩展性
多态的弊端:不能访问子类的特有功能
多态的分类
类的多态
abstract class Fu {
public abstract void method();
}
class Zi extends Fu {
public void method(){
System.out.println(“
}
}
//类的多态使用
Fu fu= new Zi();
接口的多态
interface Fu {
public abstract void method();
}
class Zi implements Fu {
public void method(){
System.out.println(“重写接口抽象方法”
}
}
//接口的多态使用
Fu fu = new Zi();
instanceof 关键字
格式: 对象名 instanceof 类名 返回值: true, false 作用: 判断指定的对象 是否为 给定类创建的对象