第五章 抽象类和接口

final

      修饰类->该类不能被继承;

      修饰方法->该方法可以被继承但是不能被重写;

      修饰属性->表示该属性能且只能被赋一次值【1.定义的同时初始化 2.构造函数中初始化】

 

抽象类:abstract

            抽象类:一个抽象类通常都含有抽象方法;

            含有抽象方法的类必须被标记为abstract类;

            抽象类对象无法实例化,但是可以实现多态;

            继承抽象类必须重写抽象方法,除非该子类也是抽象类

/*
 * 抽象类:含有抽象方法的类必须被标记为抽象类
 * 		   抽象类不一定必须含有抽象方法
 */
public abstract class People {
	// 属性----不受抽象类的影响
	public String name ;
	public String sex;
	public final String type ;
	
	/*
	 * 	抽象类不能实例化
	 *	但也具有构造方法
	 */
	public People(){
		type = "people";
	}	
	
	// 抽象方法
	public abstract void show();
	
}
/*
 * 继承抽象类
 */
public class Student extends People {
	// 属性也会自动继承
	
	public final String type ;
	
	public Student(){
		type = "student";
	}	
	
	/*
	 * 继承抽象类的子类若不是抽象类,则必须重写父类的抽象方法
	 */
	@Override
	public void show() {
		System.out.println("I am a "+ type);
	}
}

 

接口:interface

            接口没有构造方法;

            接口中的方法都是 public abstract,接口中的属性都是public static final,修饰符可部分或全部省略;

            接口可以多继承接口,类可以实现多接口;

            接口对象无法被定义,但是接口可以实现多态;

            实现接口必须重写接口中的方法public不能省略;抽象类也可以实现接口,可以不用重写接口中的方法

            【举例:线程的创建,事件的处理,容器的组织方式,serializable接口】

/***************接口1******************/
package com.people;

public interface IDrink {
	/*
	 * 修饰符可以部分省略
	 */
	public void drink();
}
/***************接口2******************/
package com.people;

public interface IRun {
	/*
	 * 跑不是人类的独有特点,故可以通过接口来实现
	 */
	public abstract void run();// 修饰符可以部分或全部省略
}
/***************接口3******************/
package com.people;

public interface ISmok {
	/*
	 * 修饰符可以全部省略
	 */
	void smoking();
}

/***************接口4******************/
package com.people;

public interface ISmokeAndDrink extends IDrink ,ISmok{
	/*
	 * 接口可以多继承接口
	 */
}
/***************父类******************/
package com.people;

/*
 * 人类 ----抽象类
 */
public abstract class People implements IRun{
	/*
	 * 抽象类实现接口,可以不用重写接口中的方法
	 */
	public String name;
	public String sex;
	public int age;
	
	// 思考是人类的最鲜明的特点!!!
	public abstract void thinking();
	
}
/***************子类1******************/
package com.people;

/*
 * 子类不是抽象类,继承的抽象方法都必须重写
 */
public class Man extends People implements ISmokeAndDrink{

	@Override
	public void thinking() {
		System.out.println("男人是一种理性动物!!!");
	}

	@Override
	public void run() {
		System.out.println("男人跑的快!!!");
	}

	@Override
	public void drink() {
		System.out.println("男人大口喝酒!!!");		
	}

	@Override
	public void smoking() {
		System.out.println("男人一般都抽烟!!!");		
	}

}
/***************子类2******************/
package com.people;

/*
 * 类可以多实现接口
 */
public class Woman extends People implements IDrink ,ISmok{

	@Override
	public void thinking() {
		System.out.println("女人是一种感性动物!!!");
	}

	@Override
	public void run() {
		System.out.println("女人跑的慢");
	}

	@Override
	public void drink() {
		System.out.println("女人小口喝酒");
	}

	@Override
	public void smoking() {
		System.out.println("女人一般不抽烟");
	}

}

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值