zoukankan      html  css  js  c++  java
  • 1.继承(extends)、超类(superClass)、子类(subClass)

    注意:继承主要使用的is-a关系

    在子类中用一个新的方法来覆盖超类中的方法(override),需要注意的是如果子类之中的方法或者域  被覆盖时,仍然想访问superClass中的方法和域,此时必须使用super的关键字。

    比如:


     class Manager extends Employee {
    	 private double bonus;
    	 public Manager(String n,double s,int y,int m,int d)
    	 {
    		 super(n,s,y,m,d);
    		 bonus=0;
    	 }
    	public double getSalary()
    	{
    		double baseSalary=super.getSalary();
    		return baseSalary+bonus;
    	}
    	public void setBonus(double b)
    	{
    		bonus=b;
    	}
    }
      class Employee {
    	 private String name;
    	 private double salary;
    	 private Date hireDay;
    	 public Employee(String n,double s,int year,int month,int day)
    	 {
    		 name=n;
    		 salary=s;
    		 GregorianCalendar calendar=new GregorianCalendar(year,month-1,day);
    		 hireDay=calendar.getTime();
    	 }
    	 public String getName()
    	 {
    		 return name;
    	 }
    	 public double getSalary()
    	 {
    		 return salary;
    	 }
    	 public Date getHireDay()
    	 {
    		 return hireDay;
    	 }
    	 public void raiseSalary(double byPercent)
    	 {
    		 double raise=salary*byPercent/100;
    		 salary+=raise;
    	 }
    }

    其中Manager中继承了Employee,重载了其getSalary的方法,其中必须使用super.salary来访问超类中的salary域。

    小结:

    1.super的两种用法:一、调用超类中的构造器。二、调用访问被重载了的域或者方法。可以类比与this的用法。

    2.多态(polymorphism):一个对象变量可以指示多种实际类型的现象。比如说其中的e

    Manager boss=new  Manager("vaful wu",8000,1994,1,8);
    		boss.setBonus(5000);
    	
    	Employee[] staff=new Employee[3];
    	staff[0]=boss;
    	staff[1]=new Employee("aa",5000,1989,10,1);
    	staff[2]=new Employee("bb",4000,1990,12,3);
    for(Employee e: staff)
    		System.out.println("name:"+e.getName()+"    salary:"+e.getSalary());

    e对应的是Employee和重载的Manager对象。

    因此,可以将子类的引用赋值给超类,但反之不行。因为is-a的关系,比如说manger一定是一个employee(原则是:特殊到一般,复杂到简单)

    2.多态和动态绑定、抽象abstract

    多态指的就是一个对象变量可以指示多个实际类型,并在编译器的运行过程中,一般选择动态绑定。

    编译器的一般执行过程:一、查看对象的声明类型和方法名。二、查看方法的类型的参数名和个数,三、如果不是private、static和final方法,则实现动态绑定在method table中选择最接近的方法。



    使用关键字abstract可以使得抽象类中没有必要的方法或者形式上的方法:

    类比于C++中的纯虚函数

    public:vitrual string getDescription()=0;//c++中的类似用法

    比如Person类中:

    public abstract String getDescription();

    但是需要注意的是abstract类不能被实例化。


    3.Java中常见的4中修饰符

    private:仅仅是本类可用

    public:对所有类可用

    protected:对本包及所有子类可用

    默认(default)不要修饰符:对本包可见


    4.object类

    可以通过file:///D:/Java/docs/api/index.html查看文档。

    5.可变参数方法(类比C语言中的可变参数函数)

    /***********************Java*******/

    public class PrintStream{

            public PrintStream printf(String fmt. Object ... args){return format(fmt,args);}

    }省略号是Java的一部分,表明这个方法可以接受任意数量的对象。实际上后者表示的是Object 数组,即Object[];

    /********C语言*****************/

    使用头文件stdarg.h,函数声明形式类似于type fun(int n_values,...)

    例如:

    </pre><pre name="code" class="cpp">float average(int n_values,...)
    {
         va_list var_arg;
         int count;
         float sum=0;
         va_start(var_arg,n_values);
         for(count=0;cpunt<n_values;count+=1){
          sum+=va_arg(val_arg,int);
    }
         va_end(var_arg);
         return sum/n_values;
    }
  • 相关阅读:
    Attach Files to Objects 将文件附加到对象
    Provide Several View Variants for End-Users 为最终用户提供多个视图变体
    Audit Object Changes 审核对象更改
    Toggle the WinForms Ribbon Interface 切换 WinForms 功能区界面
    Change Style of Navigation Items 更改导航项的样式
    Apply Grouping to List View Data 将分组应用于列表视图数据
    Choose the WinForms UI Type 选择 WinForms UI 类型
    Filter List Views 筛选器列表视图
    Make a List View Editable 使列表视图可编辑
    Add a Preview to a List View将预览添加到列表视图
  • 原文地址:https://www.cnblogs.com/zgj544/p/7588835.html
Copyright © 2011-2022 走看看