java练手题之三类继承与多态

来源:互联网 发布:网络本科 编辑:程序博客网 时间:2024/06/05 04:43

    java中,每个类只可以有至多一个父类,一个父类可以有多个子类,这点与c++不同,不支持多重继承,但是java有接口,下一节会学习到。

    1.创建子类

         [修饰符] class 子类 extends 父类类名

          {

          }

   2.类继承的传递性

      子类在创建的时候,是沿着其继承路线,从最上面的父类开始创建

   3.关键字super 

      可以访问父类的变量或者方法:super.方法名(参数列表)  或者 super.变量名

      使用父类的构造方法:super(参数列表)

   4.类的多态

      方法的重载、子类对父类方法的覆盖、子类对抽象父类中的抽象方法的具体定义

   5.包

     ①定义包

     package 包名;

     放在首行。package xx1.xx2.xx3 就像文件系统中的 c:/dd/rr ;需要建立相应的目录;

   ②导入包

    import 包名.类名;// *号,表示所有

  eg: import java.awt.event.*

  6.常见系统包

   java.lang包:里面有Math类、String类、System类和Pachage类

   java.applet包:用来创建Applet的必须类

  java.awt包:图形

  7.访问控制符有 private,friendly(缺省) ,protected ,public.

   关于访问有四种情况。

   1、同一类中:private ,friendly ,protected , public 修饰可以访问;

   2、同一包的类中friendly ,protected , public 修饰可以访问;

   3、子类可以访问protected , public 修饰的父类;

   4、public可以供所有类的访问。

   简单的讲:

    1、public:全部类可见;

    2、private:类内部的方法、内部类可见;

    3、friendly:包内可见;

    4、protected:继承的子类可见;

----------------------------------------------------------

  1. 公有访问控制符public:

     Java的类是通过包的概念来组织的,包是类的一个松散的集合。

     处于同一个包中的类可以不需要任何说明而方便的互相访问和引用,而对于不同包中的类,则不行。但当一个类被声明为public时,他就具有了被其他包中的类访问的可能性,只要这些其他包中的类在程序中使用import语句引入public类,就可以访问和引用这个类。

     类中被设定为public的方法是这个类对外的接口部分,避免了程序的其他部分直接去操作类内的数据,这实际就是数据封装思想的体现。

   每个Java程序的主类都必须是public类,也是基于相同的原因。

     用public修饰的类的域称为公共域。如果公共域属于公共类,则它能被所有的其他类所引用。

public修饰符会造成安全性的数据封装性下降,所以一般应减少public域的使用。

   2. 缺省访问控制符:

    缺省访问控制权规定,该类只能被同一个包中的类访问和引用,而不可以被其他包中的类使用,这种访问特性又称为包访问性。

    同样道理,类内的域或方法如果美育访问控制符来限定,也就具有包访问性。

    简单说,定义在同一个程序中的所有类属于一个包。

   3. 私有访问控制符private :

    用private修饰得域或方法只能被该类自身所访问和修改,而且不能被任何其他类(包括该类的子类)来获取和引用。private修饰符用来声明那些类的私有成员,它提供了最高的保护级别。

   4. 保护访问控制符protected :

    用protected修饰的成员变量可以被三种类所引用:该类自身、与它在同一个包中的其它类、在其他包中的该类的子类。使用protected修饰符的主要作用是允许其他包中该类的子类来访问父类的特定属性。

   5. 私有保护访问控制符 private protected :

    用private protected修饰的成员变量可以被两种类访问和引用,一种是该类本身,一种是该类的所有子类。把同一个包内的非子类排除在可访问的范围之外,使得成员变量更专于具有明确继承关系的类,而不是松散地组合在一起的包。

    另记:内部类的修饰字还可以是private:即只有外层类的区域可以访问。

public class Produce{  protected String name;  protected double price;  public Produce(String name, double price){    this.name=name;    this.price=price;  }  public String toString(){    String s=name+"\t"+price;    return s;  }}


 

public class Sales extends Produce{  protected int num;  protected double discount;  public Sales(String name, double price, int num, double discount){    super(name, price);    this.num=num;    this.discount=discount;  }  private double cost(){    double cost=price*num*discount;    return cost;  }  public String results(){    String s="\t"+num+"\t"+discount+"\t"+cost();    return s;  }}


 

public class Produce_sales{  public static void main(String args[]){    Sales s1=new Sales("电视机",2999.99,100,0.95);    Sales s2=new Sales("洗衣机",699.99,400,0.9);    System.out.println(s1+"\t"+s1.results());    System.out.println(s2+"\t"+s2.results());  }}


 

 
原创粉丝点击