本文首先介绍继承、抽象类、接口,然后附上关于继承、接口的一个笔记本实例应用。
目录
继承
继承说白了就是抽取共性内容,当多个类中有相同的成员,把相同的成员抽取到一个类中,那么这个类叫父类(基类)
那么继承这个类的类叫子类,子类会自动拥有父类非私有的成员(成员变量、成员方法)
特点:子类拥有了父类非私有成员,子类也可以用于自己的成员。
注意事项:
1.父类构造方法不可以继承,因为构造方法就是给类的数据进行初始化的。
2.支持多个子类继承同一个父类,但不支持多继承(即同时继承多个父类)。
3. super关键字用来访问父类内容,而this关键字用来访问本类内容。可以通过super调用父类的成员,也可以调用父类重载构造。
4.super的父类构造调用,必须是子类构造方法的第一个语句。不能一个子类构造调用多次super构造。
5.当父类满足不了子类需求时,可以进行方法重写,这样既保有了子类特有的功能,也继承了父类的功能
6.子类进行方法重写时,子类和父类的方法名及参数列表必须一样;子类的返回值范围小于等于父类的返回值范围;子类的权限必须时大于等于父类的权限。
抽象类
抽象方法:当多个类方法的功能是相似的.但是具体的功能是不一样的,我们只抽取方法的声明,没有方法体的方法是抽象方法
*抽象类不一定含有抽象方法,但含有抽象方法的类一定是抽象类。
抽象类和抽象方法格式:
public abstract class 类的名称{
public abstract 返回值类型 抽象方法名(有参/无参);
}
注意事项:
1.抽象类不能创建对象,只能创建其非抽象子类的对象。
2.继承抽象类的子类必须重写父类的所有的抽象方法。除非子类也是抽象类。
3.抽象类中可以拥有非抽象方法。
4.抽象类可以又构造方法,是让子类手动调用的,也是给抽象类中的成员进行数据初始化的。
接口
接口(Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合。接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。如果一个类只由抽象方法和全局常量组成,那么这种情况下不会将其定义为一个抽象类。只会定义为一个接口,所以接口严格的来讲属于一个特殊的类,而这个类里面只有抽象方法和全局常量,就连构造方法也没有。
注意事项:
1.接口的实现通过implements关键字实现。
2.接口支持多实现,即一个子类可以同时实现多个接口,可以理解为间接的实现了多继承。
3.对于一个子类,可以同时继承某个父类和实现多个接口。
4.实现一个接口, 要么重写所有的抽象方法, 要么该实现类自己本身也是一个抽象类.
5. 如果实现类实现多个接口, 多个接口中存在重复的抽象方法, 实现类之重写一个即可
6. 如果实现类所实现的多个接口中, 存在重复的默认方法, 必须对冲突的默认方法重写
7. 如果实现类, 从父类中继承下来的方法, 和接口中默认的方法重名了. 优先用父类的方法.
8.接口与接口之间可以多继承
9.如果多个父接口当中, 出现了重复的默认方法, 那么子接口必须对方法进行覆盖重写, 而且不能省略default关键字 !!
笔记本实例应用
进行描写笔记本类,实现笔记本使用USB鼠标、USB键盘。
定义USB接口:
package com.heima.demo1.Work1;
//定义USB接口
/*
进行描述笔记本类,实现 笔记本使用USB鼠标、USB键盘
1.定义USB接口:
开启功能
关闭功能
*/
public interface USB {
public abstract void connection();
public abstract void disconnection();
}
定义笔记本类:
package com.heima.demo1.Work1;
//笔记本类
/*
开机功能
关机功能
定义使用USB设备的功能
要求:既能使用鼠标也能使用键盘,使用USB功能内部调用开启和关闭功能
*/
public class Computer{
public void openComputer(){
System.out.println("开机");
}
public void closeComputer(){
System.out.println("关机");
}
//使用USB设备方法
//方法的参数,就是USB设备
public void useUSB(USB usb){
usb.connection();
usb.disconnection();
}
}
定义鼠标类:
package com.heima.demo1.Work1;
//鼠标类
public class Mouse implements USB {
public void connection(){
System.out.println("连接鼠标的USB");
}
public void disconnection(){
System.out.println("断开鼠标的USB");
}
}
定义键盘类:
package com.heima.demo1.Work1;
//键盘类
public class KeyBoard implements USB{
public void connection(){
System.out.println("连接键盘的USB");
}
public void disconnection(){
System.out.println("断开鼠标的USB");
}
}
测试类:
package com.heima.demo1.Work1;
/*
5.定义测试类:
创建电脑对象,依次调用开机方法,使用USB设备, 关机方法
*/
public class Test01 {
public static void main(String[] args) {
Computer c=new Computer();
c.openComputer();
//调用笔记本使用USB设备的方法
//参数,是USB接口类型,接口不能建立对象
//调用方法,传递USB接口的实现类的对象
c.useUSB(new Mouse());
c.useUSB(new KeyBoard());
c.closeComputer();
}
}
测试结果:
开机
连接鼠标的USB
断开鼠标的USB
连接键盘的USB
断开鼠标的USB
关机
Process finished with exit code 0