注:该文章的内容来自慕课网
抽象类:
语法定义: 抽象类前使用abstract关键字修饰,则该类称为抽象类.
应用场景:
抽象的作用: 限制规定子类必须实现某些方法,但不关注具体实现细节.
抽象的规则: 1.使用abstract关键字定义
2. abstract定义抽象方法,只有声明,不需要实现
3. 包含抽象方法的类是抽象类
4. 抽象类中可以包含普通的方法,也可以没有抽象方法
5.抽象类不能直接创建,可以定义引用变量
举例:
定义一个抽象类 Telphone:
public abstract class Telphone{
public abstract void call();
public abstract void message();
}
定义一个SmartPhone类继承抽象类Telphone:
public class SmartPhoneextends Telphone{
@Override
public void call() {
System.out.println("智能手机通过语音打电话");
}
@Override
public void message() {
System.out.println("智能手机通过语音发短信");
}
}
测试使用:
Telphone tel =new SmartPhone();
tel.call();
tel.message();
--------------------------------------------------------------------------------------------------------------------
接口的概念:
1.接口可以理解为一种特殊的类,由全局常量和公共的抽象方法所组成.
2.如果类是具体的实现体,那么接口就是定义了某一批类所要遵循的规范,接口不关心这些类的内部数据,也不关心这些类里面的方法实现细节,它只规定这些类里必须提供某些方法.
接口的定义:
使用interface关键字,其基本语法为:
定义常量:
接口中的属性是常量,即使定义时不添加Public static final修饰符,系统也会自动加上.
定义方法:
接口中的方法只能是抽象方法,即使定义时不加public abstract修饰符,系统也会自动添加.
使用接口:
一个类可以实现一个或多个接口,实现接口使用implements关键字,Java中一个类只能继承一个父类,是不够灵活的,通过实现多个接口进行弥补这个不足.
举个例子:
创建一个接口:Person
public interface Person{
public void playGame();
}
创建一个Run类实现接口:
public class Runimplements Person{
@Override
public void playGame() {
System.out.println("我是人类,我可以奔跑");
}
}
再创建一个child类实现接口:
public class childimplements Person{
@Override
public void playGame() {
System.out.println("我是一个孩子");
}
}
然后写一个测试类:
public class Test{
public static void main(String[] args) {
Person game =new child();
game.playGame();
Person psp =new Run();
psp.playGame();
}
}
注: 接口在使用过程当中,还经常与匿名内部类配合使用. 匿名内部类就是没有名字的内部类,多用于关注实现而不关注实现类的名字.
举例:
Person person =new Person() {
@Override
public void playGame() {
System.out.println("使用匿名内部类实现接口");
}
};
person.playGame();
其实,还有一种方式,可直接new一个接口:
new Person() {
@Override
public void playGame() {
System.out.println("我也是使用匿名内部类实现了接口");
}
}.playGame();
java的重写:
java中的封装:
封装步骤: