java面向对象编程-接口

一.概念

如果一个抽象类没有字段,所有方法全部都是抽象方法的话,则可以定义为:interface。
接口定义的所有方法默认都是public abstract的,所以这两个修饰符不需要写出来(写不写效果都一样)。

  1. 1个接口可以继承多个接口
  2. 接口内不能定义普通字段,接口中定义字段类型为 static final
  3. 接口定义的所有方法默认都是public abstract,所以这两个修饰符不需要写出来(写不写效果都一样)。
  4. 1个类可以implments很多个接口

abstract个interfac的区别

abstract classinterface
继承只能extends一个class可以implements多个interface
字段可以定义实例字段不能定义实例字段
抽象方法可以定义抽象方法可以定义抽象方法
非抽象方法可以定义非抽象方法可以定义default方法

例如:

abstract class Person {
    public abstract void run();
    public abstract String getName();
}
/
interface Person {
    void run();
    String getName();
}

default方法

1.实现类可以不必覆写default方法。default方法的目的是,当我们需要给接口新增一个方法时,会涉及到修改全部子类。如果新增的是default方法,那么子类就不必全部修改,只需要在需要覆写的地方去覆写新增方法。
2.default方法和抽象类的普通方法是有所不同的。因为interface没有字段,default方法无法访问字段,而抽象类的普通方法可以访问实例字段
接口可以定义default方法(JDK>=1.8)
例如:

public class Main {
    public static void main(String[] args) {
        Person p = new Student("Xiao Ming");
        p.run();
    }
}
interface Person {
    String getName();
    default void run() {
        System.out.println(getName() + " run");
    }
}
class Student implements Person {
    private String name;

    public Student(String name) {
        this.name = name;
    }

    public String getName() {
        return this.name;
    }
}

例如:
接口Obj-》Person
接口 Person2

public class Main{
	public static void main(String[] args){
		//Student
		Student s=new Student();
		//接口Person
		Person p=s;
		p.setAge(25);
		p.setName("sikui");
		//接口Person2
		Person2 p1=s;
		System.out.println(p1.getName());
		System.out.println(p1.getAge());
	}
}
//接口Obj 
interface Obj {
	public void life();
}
//接口Person 继承接口
interface Person extends Obj {
	public void setName(String _name);
	public void setAge(int _age);
}
interface Person2 {
	public String getName();
	public int getAge();
}
//类实例化接口
class  Student implements Person,Person2 {
	private String Name;
	private int age;
	public void life(){
		System.out.println("life");
	}
	public void setName(String _name){
		this.Name=_name;
	}
	public void setAge(int _age){
		this.age=_age;
	}
	public String getName() {
		return this.Name;
	}
	public int getAge() {
		return this.age;
	}
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值