接口和抽象的实现

  • 1.接口的使用
  • 2.java中,接口和类是并列的两个结构
  • 3.如何定义接口:定义接口中的成员
  •   3.1:在JDK7及以前:只能定义全局常量和抽象方法
    
  •         》全局变量:public static final的,单数书写时,可以省略
    
  •         》抽象方法 public abstract的
    
  •   3.2:JDK8;除了定义全局常量和抽象方法之外,还可以定义静态方法,默认方法
    
  • 4.接口中不能定义构造器,意味着接口不可以实例化
  • 5.java开发中,接口通过让类区实现的方式来使用
  • 如果实现类覆盖接口中所有的抽象方法,那么实现类就可以实例化
  • 如果实现类没有覆盖接口中所有的抽象方法,则此是实现类仍为一个抽象类
  • 6.java类可以实现多个接口,
public class InterfaceTest {
	public static void main(String args[] ) {
		System.out.println(Flyable.MAX_SPEED);
		System.out.println(Flyable.MIN_SPEED);
		
		Plan plane=new Plan();
		plane.fly();
		
	}
}
interface Flyable{
	//全局变量
	public static final int MAX_SPEED=7900;
	int MIN_SPEED=1;
	
	public abstract void fly();
	void stop();
	
	
}

interface Attackable{
	void attack();
	
}
class Plan implements Flyable{

	@Override
	public void fly() {
		// TODO Auto-generated method stub
		
	}


	@Override
	public void stop() {
		// TODO Auto-generated method stub
		
	}
	abstract class Kite implements Flyable{
		public void fly() {
			
		}
	}
	
	class Bullet extends Object implements Flyable,Attackable,CC{

		@Override
		public void method1() {
			// TODO Auto-generated method stub
			
		}

		@Override
		public void method2() {
			// TODO Auto-generated method stub
			
		}

		
		@Override
		public void attack() {
			// TODO Auto-generated method stub
			
		}

		@Override
		public void fly() {
			// TODO Auto-generated method stub
			
		}

		
		@Override
		public void stop() {
			// TODO Auto-generated method stub
			
		}
		
	}
}



interface AA{
	void method1();
}
interface BB{
	void method2();
}
interface CC extends AA,BB{
	
}



abstract关键字的使用

  • 1.abstract:抽象的
  • 2.abstract可以用来修饰的结构:类和方法
  • 3.abstract修饰类:抽象类
  •             》此类不能实例化
    
  •     》抽象类中一定有构造器,便于子类实例化时调用(涉及:子类对象实例化的全过程)
    
  •     》开发中,都会提供抽象类的子类,让子类对象实例化,完成相关的操作
    
  • 4.abstract修饰方法:抽象方法
  •            》抽象方法,只有方法的声明,没有方法体
    
  •            》包含抽象方法的类,一定是一个抽象类。反之,抽象类中可以没有抽象发
    
  •      》若子类重写了父类中所有的抽象方法,此子类方课实例化
    
  •        若子类没有重写父类中的所有的抽象方法,则此子类也是一个抽象类,需要使用abstract修饰
    
public class AbstractTest {
	public  static void main(String args[]) {
//		Person person=new Person();
//		person.eat();
	}
}
abstract class Creature{
	public abstract void breath();
}
abstract class Person extends Creature{
	String name;
	int age;
	public Person() {
		
	}
	/**
	 * @param name
	 * @param age
	 */
	public Person(String name, int age) {
		super();
		this.name = name;
		this.age = age;
	}
//	public void eat() {
//		
//	}
	public abstract void eat();
	
	public void walk() {
		System.out.println("人:走路");
	}
}

class Student extends Person{

	
	
	public Student() {
		super();
		// TODO Auto-generated constructor stub
	}

	public Student(String name, int age) {
		super(name, age);
		// TODO Auto-generated constructor stub
	}


	@Override
	public void eat() {
		// TODO Auto-generated method stub
		System.out.println("多吃有营养的食物");
	}

	
	@Override
	public void breath() {
		// TODO Auto-generated method stub
		System.out.println("学生应该呼吸新鲜的空气");
	}
	
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值