zoukankan      html  css  js  c++  java
  • 抽象类、抽象方法的特点及使用

    抽象类

    当多个类中出现了相同功能,但功能主题不同,
    这时可以向上抽取,这时,只抽取功能定义,而不抽取功能主体。


    抽象:看不懂

    抽象类的特点:

    1、抽象方法一定定义在抽象类中,抽象类可以有非抽象方法
    2、抽象方法和抽象类都必须被abstract关键字修饰
    3、抽象类不可以用new创建对象,因为调用抽象方法没意义
    4、抽象类中的方法如果被使用,必须由子类复写起所有的抽象方法后,建立子类对象调用
    如果子类值副高了部分抽象方法,那么子类还是一个抽象类


    抽象类和一般类没有太大的不同
    该如何描述事物,就如何描述事物,只不过,该事物出现了一些看不懂的东西
    这些不确定的部分,也是该事物的功能,需要明确出现,但是无法定义主体
    通过抽象方法来表示


    抽象类比一般类多了个抽象方法,就是类中可定义抽象方法。
    抽象类不可以实例化。


    特殊:抽象类中可以不定义抽象方法,这样做仅仅是不让该类建立对象


    示例代码
    abstract class Student
    {
    	abstract void study();//不是{}…………注意,学习的方法为抽象,不能创建对象
    	void sleep()
    	{
    		System.out.println("shuijiao");
    	}
    }
    
    class BassStudent extends Student
    {
    	void study()
    	{
    		System.out.println("bass study");
    	}
    }
    
    class AdvStudent extends Student
    {
    	void study()
    	{
    		System.out.println("adv study");
    	}
    
    }
    
    class AbstractDemo 
    {
    	public static void main(String[] args) 
    	{
    		System.out.println("Hello World!");
    	}
    }


    抽象类练习

    加入我们开发一个系统时需要对员工进行建模,员工包括3个属性:姓名、工号以及工资,经理也是员工,除了有员工的属性外,另外还有一个奖金属性。请使用继承的思想。

    设计出员工类和经理类。要求类中提供必要的方法进行属性访问


    员工类:name、id、pay

    经理类:继承了员工,并有自己特有的bonus

    abstract class Employee
    {
    	private String name;
    	private String id;
    	private double pay;
    
    	Employee(String name,String id,String pay)
    	{
    		this.name=name;
    		this.id=id;
    		this.pay=pay;
    	}
    	public abstract void work();
    	
    }
    
    
    class Pro extends Employee
    {
    	Pro(String name,String id,double pay)
    	{
    		super(name,id,pay);
    	}
    	public void work()
    	{
    		System.out.println("Pro work");
    	}
    }
    
    
    class Manager extends Employee
    {
    	private int bonus;
    	Manage(String name,String id,double pay,int bonus)
    	{
    		super(name,id,pay);
    		this.bonus=bonus;
    	}
    	public void work()
    	{
    		System.out.println("manager work");
    	}
    }
    
    
    class  Company
    {
    	public static void main(String[] args) 
    	{
    		System.out.println("Hello World!");
    	}
    }
    



  • 相关阅读:
    Contest20140710 eagleeggs
    bzoj 1059: [ZJOI2007]矩阵游戏 二分图匹配
    Quick-Cocos2d-x初学者游戏教程(二) -------------------- Quick内部的代码结构及相应的原理
    Quick-Cocos2d-x初学者游戏教程(一)--------------------Quick的一些基础知识
    使用Cocos Studio 1.6 编辑人物属性界面
    Cocos2d-x 3.0 开发(十四)使用UIScrollView 实现大小不同物品拖动展示
    使用Cocos Studio 1.6 编辑开始界面
    Cocos2d-x Json用法
    Cocos2d-x xml解析
    plist文件操作
  • 原文地址:https://www.cnblogs.com/xiangyangzhu/p/4260841.html
Copyright © 2011-2022 走看看