一.接口的使用
接口(interface):用于处理继承单一的局限性;接口中的所有方法都是抽象方法;接口与了类的关系是实现(implements).
格式:interface接口名{
public static final 变量名=1;//必须初始化且不可改变。
* public abstract void 方法名();
* //接口内的方法都是抽象方法,无方法体{},不能实例化,若想实例化必须创建子类去实现。
}
接口的成员特点:只能是抽象方法和常量;接口不能创建对象(实例化);
关系:类与类:继承(单一继承,多层继承)
类与接口:实现,多实现
接口与接口:继承,多继承
interface App {//接口
public static final int i=1;
public abstract void app();
}
interface Bpp extends App{
public abstract void bpp();
}
class TestApp implements Bpp{//接口的实现
public void app(){
System.out.println("实现App接口"+i);
}
public void bpp(){
System.out.println("实现Bpp接口"+i);
}
}
public class TestAp{
public static void main(String[] args) {//测试类
TestApp t=new TestApp();
t.app();//实现App接口1
t.bpp();//实现Bpp接口1
}
}
2.多态的使用
定义:父类的引用变量指向子类对象
格式:父类名 变量=new 子类名();
成员变量:父类的成员变量在子类中被重写时,调用成员变量时调用的是子类重写的成员变量
若是子类中特有成员变量,变量名.成员变量;出错了; 必须强制转换为子类才能被调用变量名 ((子类) 变量名).成员变量;
成员方法:父类的成员方法在子类中被重写时,调用成员变量时调用的是子类重写的成员方法
若调用子类中特有成员方法,变量名.成员方法();出错了; 必须强制转换为子类才能被调用成员方法 ((子类) 父类的引用).成员方法();
特点:成员变量:编译时看左边,运行时也看左边。(编译和运行时都看左边(即看父类成员))
成员方法:编译时看左边(父类成员),运行时看右边(子类成员)
静态方法:编译时看左边,运行时也看左边。
总结:编译时都看左边,运行时成员方法看右边,其他(成员方法和静态方法)都看左边。
缺点: 1.无法直接访问子类特特有成员
优点: 1.可以提高可维护性
2.提高代码的扩展性
class Animai {//父类
Stringname;
void eat() {
System.out.println("动物吃饭");
}
}
class Dog extends Animai{//子类
void eat() {
System.out.println("狗吃饭");//若在子类中重写了父类方法,调用父类方法是调用的是被子类重写的方法
}
void slepp() {()
System.out.println("狗睡觉");
}
}
public class AnimalTest {
//多态:1.必须要有继承或者实现类的关系
2. 方法的重写
3.父类的引用指向子类的对象
public static void main(String[] args) {
Animai a =new Dog();
a.eat();//向上转型自动 动物吃饭
((Dog) a).slepp();//向下转型强制 狗吃饭
}
}
网友评论