黑马程序员_抽象类、接口

---------------------- ASP.Net+Unity开发.Net培训、期待与您交流! ----------------------


抽象类 abstract 

        1.抽象方法必须定义在抽象类中。
        2.抽象方法和抽象类必须被abstract修饰。
        3.抽象类不可以用new创建对象,因为调用抽象方法没意义。
        4.抽象类中的方法要被使用必须由子类覆写其所有的抽象方法后,建立子类对象调用,如果子类只覆盖了部分抽象方法,那么该子类还是一个抽象类。 

        当多个类中出现相同功能,但功能主体不同,可以进行抽取,只抽取功能定义,而不抽取功能主体。

        抽象类比一般类多了个抽象方法,就是在类中可以定义抽象方法。 
        抽象类不可以实例化。 
        抽象类中可以不定义抽象方法,这样做是为了不让该类建立对象。


抽象类练习


        对员工进行建模,包含3个属性:姓名、工号、工资。经理也是员工,除了含有员工的属性外,另外还有一个奖金属性。用继承思想设计出员工类和经理类,类中提供必要的方法进行属性访问。


abstract class Employee
{
	private String name;
	private String id;
	private double pay;
	
	Employee(String name, String id, double pay)
	{
		this.name = name;
		this.id = id;
		this.pay = pay;
	}
	public abstract void work();
}

class Manager extends Employee
{
	private int bonus;
	Manager(String name, String id, double pay, int bonus)
	{
		super(name,id,pay);
		this.bonus = bonus;
	}
	public void work()
	{
		System.out.println("Manager work");
	}
}

class Pro extends Employee
{
	Pro(String name, String id, double pay)
	{
		super(name,id,pay);
	}
	public void work()
	{
		System.out.println("Pro work");
	}
}
public class AbstractTest {
	
	public static void main(String[] args) {
		
	}
}


接口(interface)

        接口,初期可以理解为一个特殊的抽象类,当抽象类中的方法都是抽象的,该类可以通过接口的形式来表示。

        格式特点:

            1.接口中常见定义:常量,抽象方法。

            2.接口中的成员都有固定的修饰符:

                常量:public static final    (public static final int x = 3; )

                方法:public abstract    (public abstract void show()  )

        接口中成员都是public

        接口不用继承,用实现 implements

        接口可以不创建对象,因为有抽象方法,需要被子类实现,子类对接口中的抽象方法全部覆盖后,子类才可以实例化,否则子类是一个抽象类。

        接口可以被类多实现,也是对多继承不支持的转换形式。

        接口可以继承接口,支持多继承。

        接口是对外暴露的规则,接口是程序的功能扩展,类与接口之间是实现关系,而且类可以继承一个类的同时实现多个接口。

        基本功能定义在类中,扩展功能定义在接口中。


interface Inter
{
	public static final int A = 3;
	public abstract void show();
}
interface InterA
{
	public static final int B = 4;
	public abstract void method();
}
class Test implements Inter,InterA
{
	public void show(){};
	public void method(){};
}
public class InterfaceDemo 
{
	public static void main(String[] args)
	{
		Test t = new Test();
		System.out.println(t.A);
		System.out.println(Test.A);
		System.out.println(Inter.A);
		System.out.println(t.B);
	}
}



-----------------------ASP.Net+Unity开发.Net培训、期待与您交流! ----------------------详细请查看:http://edu.csdn.net




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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值