4-15具体类,抽象类,接口的关系

抽象类

//抽象类概述:(具体类继承抽象类)
//抽象类一般是多种事物的总称,例如老师,学生,工人等他们都人;我们就可以将人定义位一个抽象类,让老师,学生,工人等继承人这个类
//关键字abstract:class 类名前加上abstract就可以将此类定义为抽象类;
//特点:抽象类本身不能实例化;
//	  抽象类中不一定含有抽象方法;但有抽象方法的类一定是抽象类
//	  抽象类的子类如果是抽象类,是没有意义的,
//	  抽象类的子类一般都是具体类,必须实现抽象类的抽象方法,进行方法重写.
abstract class Person{
	public abstract void work();
}
class Student extends Person{
	@Override
	public void work() {
		System.out.println("学生的工作是学习");
	}
}
class Teacher extends Person{

	@Override
	public void work() {
		System.out.println("老师的工作是教书");
	}
}
public class Text1 {
	public static void main(String[] args) {
		Student s = new Student();
		s.work();
		Teacher t = new Teacher();
		t.work();
	}
}
//抽象类概述:(具体类继承抽象类)
//抽象类一般是多种事物的总称,例如老师,学生,工人等他们都人;我们就可以将人定义位一个抽象类,让老师,学生,工人等继承人这个类
//关键字abstract:class 类名前加上abstract就可以将此类定义为抽象类;
//特点:抽象类本身不能实例化;
//	  抽象类中不一定含有抽象方法;但有抽象方法的类一定是抽象类
//	  抽象类的子类如果是抽象类,是没有意义的,
//	  抽象类的子类一般都是具体类,必须实现抽象类的抽象方法,进行方法重写.
abstract class Person{
	public abstract void work();
}
class Student extends Person{
	@Override
	public void work() {
		System.out.println("学生的工作是学习");
	}
}
class Teacher extends Person{

	@Override
	public void work() {
		System.out.println("老师的工作是教书");
	}
}
public class Text1 {
	public static void main(String[] args) {
		Student s = new Student();
		s.work();
		Teacher t = new Teacher();
		t.work();
	}
}

接口

//接口概述:接口是主要体现的是事物的扩展性功能,主要是只后天学习而来的本领等.如学生在后天学会了开车;
//格式如下:interface 接口名{
//				抽象方法;
//		  }
//接口的特点:接口不能实例化,它的功能主要通过具体类去实现,它与类之间的关系式通过关键字implements相接,是实现关系
//		      接口和接口之间是继承关系,接口支持多继承
//接口成员特点:成员变量只能是常量;默认被public static final修饰
//			没有构造方法
//			只能是抽象方法,默认被public abstract修饰
interface Drive {
	public abstract void drive();
}
interface Smoking extends Drive{//接口继承接口
	public abstract void smoking();
}
class Driver implements Drive,Smoking{//具体类实现接口

	@Override
	public void drive() {
		System.out.println("司机会开车");
	}

	@Override
	public void smoking() {
		System.out.println("司机抽烟");
	}
	
}
public class Text3 {
	public static void main(String[] args) {
		Driver d = new Driver();
		d.drive();
		d.smoking();
	}
}

抽象类,接口的区别

  抽象类 接口
成员变量 可以是变量,也可以是常量 只能是常量,默认被public staticfinal修饰
构造方法 无参构造和有参构造 没有构造方法
成员方法 抽象方法和非抽象方法 抽象方法,默认被public abstract修饰

类,接口,抽象类之间的关系

/**
 * 接口,具体类,抽象类之间的关系:
 * 类与类之间是继承关系,只能是单继承,但是可以支持多层继承(抽象类与抽象类之间的继承关系是没有意义的,两者都不能创建实体对象)
 * 类与抽象类之间的关系是继承关系,抽象类不能创建对象
 * 类与接口之间是实现关系,接口的抽象功能通过类来实现,可以支持多接口
 * 接口与接口之间是继承关系
 * */


猜你喜欢

转载自blog.csdn.net/ws1995_java/article/details/79986797