Java基础篇-----抽象类,接口及内部类

在这里插入图片描述一:抽象类

public abstract class Person {
    public abstract void eat();
    public abstract void sleep();
    public void playGame(){
        System.out.println("打游戏");
    }
}
public class Teacher extends Person {
    @Override
    public void eat() {
        System.out.println("老师爱喝粥");
    }

    @Override
    public void sleep() {
        System.out.println("老师爱早睡");
    }
}
public class Student extends Person {
    @Override
    public void eat() {
        System.out.println("学生爱吃火锅");
    }

    @Override
    public void sleep() {
        System.out.println("学生爱晚睡");
    }
}
public class Test {
    public static void main(String[] args) {
        Person p=new Teacher();
        p.eat();
        p.sleep();
        p.playGame();
        p=new Student();
        p.eat();
        p.sleep();
        p.playGame();
    }
}

运行结果:

老师爱喝粥
老师爱早睡
打游戏
学生爱吃火锅
学生爱晚睡
打游戏

Process finished with exit code 0

注释:抽象类中既可以有抽象的方法,也可以有非抽象方法;抽象类的子类要么也是抽象类,要么重写父类中的所有抽象方法。

二:接口

接口用interface表示,表类与接口的实现关系用implement
public abstract class Person {
    public abstract void eat();
    public abstract void sleep();
}
public class Teacher extends Person implements MyInterface{
    @Override
    public void eat() {
        System.out.println("老师爱喝粥");
    }

    @Override
    public void sleep() {
        System.out.println("老师爱早睡");
    }

    @Override
    public void speakEnglish() {
        System.out.println("老师会说英语");
    }
}
public class Student extends Person {
    @Override
    public void eat() {
        System.out.println("学生爱吃火锅");
    }

    @Override
    public void sleep() {
        System.out.println("学生爱睡懒觉");
    }
}
public interface MyInterface {
    public abstract void speakEnglish();
}
public class Test {
    public static void main(String[] args) {
      Teacher teacher=new Teacher();
      Person p=teacher;
      p.eat();
      p.sleep();
      MyInterface myInterface=teacher;
      myInterface.speakEnglish();
      p=new Student();
      p.eat();
      p.sleep();
    }
}

运行结果:

老师爱喝粥
老师爱早睡
老师会说英语
学生爱吃火锅
学生爱睡懒觉
Process finished with exit code 0

注释:接口中只能有抽象方法
三:接口和抽象类的区别

	A:成员区别
		抽象类:
			成员变量:可以变量,也可以常量
			构造方法:有
			成员方法:可以抽象,也可以非抽象
		接口:
			成员变量:只可以常量
			成员方法:只可以抽象	
	B:关系区别
		类与类
			继承,单继承
		类与接口
			实现,单实现,多实现
		接口与接口
			继承,单继承,多继承	
	C:设计理念区别
		抽象类 	被继承体现的是:”is a”的关系。	抽象类中定义的是该继承体系的共性功能。
		接口 	被实现体现的是:”like a”的关系

四.类与类,类与接口,接口与接口的关系


		a:类与类:
			继承关系,只能单继承,可以多层继承。
		b:类与接口:
			实现关系,可以单实现,也可以多实现。
			并且还可以在继承一个类的同时实现多个接口。
		c:接口与接口:
			继承关系,可以单继承,也可以多继承。

五.内部类

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值