本篇内容介绍了“JAVA接口与抽象类怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
为庆元等地区用户提供了全套网页设计制作服务,及庆元网站建设行业解决方案。主营业务为成都网站制作、网站设计、庆元网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!

接口
概述
当需要从几个类中派生出一个类,继承他们所有的属性和方法,JAVA没有多重继承需要用接口实现
从几个类中抽取出一些共同的行为特征,而他们之间又没有is-a的关系,也需要借助接口实现
接口本质是契约,规范
使用
接口中使用interface来定义
接口和类是两个不同的结构
接口中不能定义构造器(也就不能实例化)
接口通过类来实现implements
JAVA类可以实现多个接口格式:class AA extends BB interface CC,DD
接口与接口之间可以继承,并且可以多继承
接口体现了多态性
public class UsbTest {
public static void main(String[] args) {
Computer com =new Computer();
Flash flash=new Flash();
com.transferData(flash); // USB usb =new Flash()
com.transferData(new Printer());
/*
* U盘开始工作
* 传输数据
* U盘结束工作
* 打印机开始工作
* 传输数据
* 打印机结束工作
*
* */
}}class Computer{
public void transferData(USB usb){
usb.start();
System.out.println("传输数据");
usb.stop();
}}interface USB{
void start();
void stop();}class Flash implements USB{
@Override
public void start() {
System.out.println("U盘开始工作");
}
@Override
public void stop() {
System.out.println("U盘结束工作");
}}class Printer implements USB{
@Override
public void start() {
System.out.println("打印机开始工作");
}
@Override
public void stop() {
System.out.println("打印机结束工作");
}}JDK8的写法
接口中定义的静态方法,只能通过接口调用
通过实现类的对象,可以实现接口中的默认方法
如果子类(或者实现类)继承的父类和实现的接口中声明了同名同参数方法,如果子类没有重写该方法,调用的是父类中同名同参数方法
public class JDK8Test {
public static void main(String[] args) {
SubClass sub =new SubClass();
CompareA.methods1();
sub.methods2();
/*
* Compare 北京
* Compare 上海
*/
}}class SubClass implements CompareA{}interface CompareA{
public static void methods1() {
System.out.println("Compare 北京");
}
public default void methods2() {
System.out.println("Compare 上海");
}}代理模式
代理模式就是为其他对象提供一种代理以控制对这个对象的访问
实例
public class NetWorkTest {
public static void main(String[] args) {
Server server=new Server();
ProxyServer proxyServer=new ProxyServer(server); // 放的是被代理对象进去
proxyServer.browse(); // 调用的是代理对象,但结果是真实对象的方法被调用
/*
* 检查工作
* 真实服务器访问网络
*/
}}interface NetWork{
void browse();}// 被代理类class Server implements NetWork{
@Override
public void browse() {
System.out.println("真实服务器访问网络");
}}// 代理类class ProxyServer implements NetWork{
private NetWork work;
public ProxyServer(NetWork work){
this.work=work;
}
public void check(){
System.out.println("检查工作");
}
@Override
public void browse() {
check();
work.browse();
}}内部类
JAVA允许将一个类A声明在另一个类B中,则类A是内部类,类B是外部类
内部类分类
成员内部类
静态 static
非静态
局部内部类
方法内
代码块内
构造器内
实例化内部类对象
public class InnerClassTest {
public static void main(String[] args) {
// 实例化Dog,静态类
Pseson.Dog dog=new Pseson.Dog();
dog.eat();
// 吃骨头
// 实例化Cat,非静态类
Pseson p1 =new Pseson();
Pseson.Cat cat=p1.new Cat();
cat.eat();
// 猫吃鱼
}}class Pseson{
String name;
int age;
public void eat(){
System.out.println("吃饭");
}
static class Dog{
String name;
int age;
public void eat(){
System.out.println("吃骨头");
}
}
class Cat{
public void eat(){
System.out.println("猫吃鱼");
}
}}调用外部类结构
public class InnerClassTest {
public static void main(String[] args) {
// 实例化Cat,非静态类
Pseson p1 =new Pseson();
Pseson.Cat cat=p1.new Cat();
cat.eat();
cat.display("小花");
/*
* 小花
* 波斯猫
* 人
*/
}}class Pseson{
String name="人";
int age;
public void eat(){
System.out.println("吃饭");
}
static class Dog{
String name;
int age;
public void eat(){
System.out.println("吃骨头");
}
}
class Cat{
String name="波斯猫";
public void eat(){
System.out.println("猫吃鱼");
}
public void display(String name){
System.out.println(name); // 方法中name
System.out.println(this.name); // 内部类中name
System.out.println(Pseson.this.name); // 外部类中name
}
}}接口与抽象类
相同点:不能实例化;都包含抽象方法;能被继承
不同点:抽象类有构造器,接口没有构造器;抽象类只有单继承,而接口可以多继承;抽象类extands继承,接口implements实现
“JAVA接口与抽象类怎么使用”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注创新互联网站,小编将为大家输出更多高质量的实用文章!
标题名称:JAVA接口与抽象类怎么使用
URL地址:http://www.jxjierui.cn/article/ihcssg.html


咨询
建站咨询
