抽象类
用abstract修饰的类
抽象类:用abstract关键字声明的类称为抽象类
很多具有相同特征和行为的对象可以抽象为一个类
很多具有相同特征和行为的类可以抽象为一个抽象类
1、抽象类可以没有抽象方法,有抽象方法的类必须是抽象类
2、非抽象类继承抽象类必须实现所有抽象方法
3、抽象类可以继承抽象类,可以不实现父类抽象方法。
4、抽象类可以有方法实现和属性
5、抽象类不能被实例化
6、抽象类不能声明为final
7、抽象类可以有构造方法
public class Demo01 {
public static void main(String[] args) {
Man man=new Man();
man.move();
man.eat();
Woman woman=new Woman();
woman.move();
woman.eat();
}
}
abstract class Animal{
public abstract void move();//方法的声明
}
abstract class Person extends Animal{
public abstract void eat();
}
//继承抽象类的具体类必须实现所有的抽象方法
class Man extends Person{
@Override
public void eat() {
System.out.println("我是男人,我爱吃肉");
}
@Override
public void move() {
System.out.println("我是男人,我爱跑步");
}
}
class Woman extends Person{
@Override
public void eat() {
System.out.println("我是女人,我爱吃水果");
}
@Override
public void move() {
System.out.println("我是女人,我爱逛街");
}
}
运行结果:
我是男人,我爱跑步
我是男人,我爱吃肉
我是女人,我爱逛街
我是女人,我爱吃水果
接口
/*
* interface 接口名称{
* 全局常量;
* 抽象方法;
* }
*/
//接口是所有行为的抽象面向编程的 面向编程的接口 目的是让程序更加易于维护,扩展性更强,接口只定义标准,而非具体实现
接口的使用规则:
(1)定义一个接口,使用interface关键字
(2)在一个接口中,只能定义常量、抽象方法,JDK1.8后可以定义默认的实现方法
(3)接口可以继承多个接口: extends xxx,XXX
(4) 一个具体类实现接口使用implements关键字
(5)一个类可以实现多个接口
(6)抽象类实现接口可以不实现接口的方法
(7)在接口中定义的方法没有声明访问修饰符,默认为public
(8)接口不能有构造方法
(9) 接口不能被实例化
public static void main(String[] args) {
Girl mm=new Girl("ph");
mm.sleep();
mm.eat();
mm.run();
}
}
interface IEat{
//public abstract void eat();//接口只能定义抽象方法
void eat();
//public static final int NUM=10;//定义常量
int NUM=10;
}
interface IRun{
void run();
}
/* interface ISleep extends IEat{
void run();
}*/
//接口可以多继承,类只能单继承
interface ISleep extends IEat,IRun{
void sleep();
}
class Girl implements IEat,ISleep{
private String name;
public Girl(String name){
this.name=name;
}
public Girl(){
}
public void run(){
System.out.println("我是"+this.name+",我爱飞");
}
public void eat(){
System.out.println("我爱吃烤鸭");
}
public void sleep(){
System.out.println("我爱睡觉");
}
}
运行结果:
我爱睡觉
我爱吃烤鸭
我是ph,我爱飞