zoukankan      html  css  js  c++  java
  • Java面向对象练习

    1、面向对象的类定义、对象实例化、修改属性和引用对象。

     1 package firstproject;
     2 //定义一个car类
     3 class Car
     4 {
     5     //描述颜色
     6     String color="blue";
     7     //描述轮胎数
     8     int n=4;
     9     //描述行为
    10     void run()
    11     {
    12         System.out.println("The car is running!");
    13     }
    14 }
    15 public class CarDemo 
    16 {    
    17     public static void main(String[] args)
    18     {
    19         //实例化车对象
    20         Car c=new Car();
    21         //修改车的颜色属性
    22         c.color="green";
    23         System.out.println(c.color);
    24         c.run();
    25         Car c1=new Car();
    26         System.out.println(c1.color);
    27         
    28         //多个引用,同一个对象
    29         Car c2=new Car();
    30         Car c3=new Car();
    31         c2.color="black";
    32         c3=c2;
    33         c3.n=5;
    34         System.out.println(c2.n);
    35     }
    36     
    37 }

    2、匿名对象当作实参。

     1 package firstproject;
     2 //定义一个car类
     3 class Car
     4 {
     5     //描述颜色
     6     String color="blue";
     7     //描述轮胎数
     8     int n=4;
     9     //描述行为
    10     void run()
    11     {
    12         System.out.println("The car is running!");
    13     }
    14 }
    15 public class CarDemo 
    16 {    
    17     public static void main(String[] args)
    18     {
    19         //对象当作实参
    20         Car c=new Car();
    21         r(c);
    22         //匿名对象当作实参
    23         r(new Car());
    24     }
    25     public static void r(Car c)
    26     {
    27         c.color="red";
    28         c.n=3;
    29         c.run();
    30     }
    31 }

     3、利用private修饰符、set函数和get函数实现封装

     1 package firstproject;
     3 public class People
     4 {
     5     public static void main(String[] args)
     6     {
     7         P p1=new P();
     8       //p1.age=44;
     9         p1.set_Age(23);
    10         System.out.println(p1.get_Age());
    11     }
    12 }
    13 //定义一个人的类
    14 class P
    15 {
    16     private int age;                //程序运行过程中,自始至终都没有变化过
    17     public void set_Age(int age)    
    18     {
    19         this.age=age;                //左边的age是private修饰过的age
    20     }
    21     public int get_Age()
    22     {
    23         return age;
    24     }
    25     void speak()
    26     {
    27         System.out.println("I will talk !");
    28     }
    29 }

     4、继承、封装

     1 /*
     2  * 继承、多态练习
     3  */
     4 public class Test 
     5 {
     6     public static void main(String[] args) 
     7     {
     8         //zi a=new zi();
     9         //System.out.println("a.num1="+a.num+"
    "+"a.num2="+a.num);
    10         //a.show();
    11         //a.show1();
    12         zi b=new zi();
    13         System.out.println(b.num);
    14         System.out.println(Person.MY_PAI);
    15     }
    16 }
    17 
    18 //子类调用父类的构造函数
    19 class fu
    20 {
    21     int num=8;
    22     fu()
    23     {
    24         num=43;
    25         System.out.println("fei yada");
    26     }
    27     fu(int x)
    28     {
    29         System.out.println("fei yada");
    30     }
    31 }
    32 class zi extends fu
    33 {
    34     zi()
    35     {
    36         super();                //默认调用父类的构造函数
    37         //super(4);
    38         System.out.println("lang wei");
    39     }
    40 }
    41 
    42 //子类调用父类的函数和成员变量
    43 class fu1
    44 {
    45     int num=23;
    46     public void show()
    47     {
    48         System.out.println(num);
    49     }
    50 }
    51 class zi1 extends fu1
    52 {
    53 
    54     int num=32;
    55     public void show()                 //覆盖重写父类功能
    56     {
    57         //super.show();            //调用父类的方法
    58         System.out.println(this.num);
    59         System.out.println(super.num);
    60         
    61     }
    62 }
    63 /*
    64  * 子类调用父类的构造方法和一般方法的方式
    65  */
    66 class Person
    67 {
    68     public static final double MY_PAI=3.141592653;     //最终成员变量不允许二次赋值,它是一个常量
    69     private String name;
    70     Person(String name)
    71     {
    72         this.name=name;
    73     }
    74     void run(){}
    75 }
    76 class Student extends Person
    77 {
    78     String name;
    79     Student(String name)
    80     {
    81         super(name);
    82     }
    83     void run()
    84     {
    85         super.run();
    86     }
    87 }

    5、构造函数,一般函数、属性构造器、构造代码快和this关键字的使用

     1 package firstproject;
     2 public class People
     3 {
     4     public static void main(String[] args)
     5     {
     6         P p1=new P();                   //构造函数,只被对象调用一次
     7         P p2=new P("Joe Shine",23);
     8         System.out.println("之前的姓名是: "+p2.get_Name());
     9         p2.set_Name("Joe");
    10         System.out.println("之后的名字是: "+p2.get_Name());
    11         P p3=new P(23);
    12         P.cry();                       //一般函数,可以被对象调用多次
    13         P p4=new P("xiaowang");           //实例化两个人,比较两个人的名字是否相同
    14         P p5=new P("daming");
    15         boolean b=p4.compare(p5);
    16         System.out.println(b);
    17     }
    18 }
    19 //定义一个人的类
    20 class P
    21 {
    22     private String name;
    23     private int age;
    24     
    25     public void set_Name(String name) //属性构造器
    26     {
    27         this.name=name;
    28     }
    29     public String get_Name()
    30     {
    31         return name;
    32     }
    33     
    34     public void set_Age(int age)     //属性构造器
    35     {
    36         this.age=age;
    37     }
    38     public int get_Age()
    39     {
    40         return age;
    41     }
    42     //定义多种构造函数
    43     P()
    44     {
    45         System.out.println("name="+name+",age="+age);
    46     }
    47     P(String name)
    48     {
    49         this.name=name;
    50     }
    51     P(String name,int age)
    52     {
    53         this(name);                        //this用在构造函数间调用
    54         this.age=age;
    55         System.out.println("name="+name+",age="+age);
    56     }
    57     P(int age)  
    58     {
    59         this.age=age;
    60         System.out.println("age="+age);
    61     }
    62     static void cry()
    63     {
    64         System.out.println("cry....");
    65     }
    66     //构造代码块
    67     {
    68         System.out.println("优先执行!!!");
    69     }
    70     //设计函数,比较两个人的人名是否相同,使用this关键字调用对象
    71     public boolean compare(P p)
    72     {
    73         return this.name==p.name;
    74     }
    75 }
    6、抽象、继承特性练习
      1 /*
      2  * 抽象、继承练习
      3  */
      4 class BaseStudent extends Student
      5 {
      6     void study()
      7     {
      8         System.out.println("Base study");
      9     }
     10     void learn(){}                //子类中必须实现父抽象类中的所有方法
     11 }
     12 class AdvanStudent extends Student
     13 {
     14     void study()
     15     {
     16         System.out.println("Advance study");
     17     }
     18     void learn(){}
     19 }
     20 abstract class Student            //抽象方法只能在抽象类中
     21 {
     22     abstract void study();
     23     abstract void learn();
     24 }
     25 
     26 /* 实例:
     27  * 假如我们开发一个系统是需要对员工进行建模,员工包括三个属性:姓名、工资和工号。经理也是员工,除了具有员工的属性外,
     28  * 还具有奖金属性。请使用继承的思想设计出员工类和经理类。要求类中提供必要的方法进行属性访问。
     29  */
     30 
     31 //主函数
     32 public class Test 
     33 {
     34     public static void main(String[] args) 
     35     {
     36         //BaseStudent stu1=new BaseStudent(); 
     37         //stu1.study();
     38         Manager m1=new Manager("zhangsan","092238984",5000,400);
     39         Employee e1=new Employee("lisi","0123454",500);
     40         System.out.println(m1.getName());
     41         System.out.println(e1.getName());
     42         m1.work();
     43         e1.work();
     44     }
     45 }
     46 //定义打工者,它是一个抽象类
     47 abstract class Staff 
     48 {
     49     //声明私有的成员变量
     50     private String name;
     51     private String id;
     52     private double pay;
     53     //抽象类内部可以有构造方法
     54     Staff(String name,String id,double pay) 
     55     {
     56         this.name=name;
     57         this.id=id;
     58         this.pay=pay;
     59     }
     60     //属性构造器
     61     public void setName(String name)
     62     {
     63         this.name=name;
     64     }
     65     public String getName()
     66     {
     67         return name;
     68     }
     69     public void setId(String id)
     70     {
     71         this.id=id;
     72     }
     73     public String getId()
     74     {
     75         return id;
     76     }
     77     public void setPay(double pay)
     78     {
     79         this.pay=pay;
     80     }
     81     public double getPay()
     82     {
     83         return pay;
     84     }
     85     
     86     //定义抽象的成员方法
     87     abstract void work();
     88 }
     89 //员工类
     90 class Employee extends Staff
     91 {
     92     Employee(String name,String id,double pay)
     93     {
     94         super(name, id, pay);
     95     }
     96     void work()
     97     {
     98         System.out.println("员工工作内容");
     99     }
    100 }
    101 //经理类
    102 class Manager extends Staff
    103 {
    104     private int bonus;
    105     Manager(String name,String id,double pay,int bonus)
    106     {
    107         super(name,id,pay);
    108         this.bonus=bonus;
    109     }
    110     public int getBonus() 
    111     {
    112         return bonus;
    113     }
    114     public void setBonus(int bonus)
    115     {
    116         this.bonus = bonus;
    117     }
    118     void work()
    119     {
    120         System.out.println("经理工作内容");
    121     }
    122 }

     7、模版方法设计模式例子

     1 /*
     2  * 实例:设计程序得出程序运行的时间
     3  * 思路:利用System.currentTimeMillis();函数
     4  */
     5 public class Test extends Code
     6 {
     7     public static void main(String[] args) 
     8     {
     9         Code a=new Code();
    10         a.runcode();
    11     }
    12 }
    13 abstract class GetTime
    14 {
    15     public final void getTime()   //定义为最终类,确保获取时间的方法不可以复写
    16     {
    17         long start=System.currentTimeMillis();
    18         runcode();
    19         long end=System.currentTimeMillis();
    20         System.out.println("
    运行时间是:"+(end-start)+"毫秒");
    21     }
    22     abstract void runcode();
    23 }
    24 class Code extends GetTime
    25 {
    26     void runcode()
    27     {
    28         
    29     }
    30 }

     8、多态的扩展性

     1 /*
     2 多态性扩展性的实例
     3  */
     4 public class InterfaceDemo
     5 {
     6     public static void main(String[] args) 
     7     {
     8         /*
     9         Cat c=new Cat();
    10         c.eat();
    11         Dog d=new Dog();
    12         d.eat();
    13         Pig p=new Pig();
    14         p.eat();
    15         */
    16         /*
    17         chi(new Dog());
    18         chi(new Pig());
    19         chi(new Cat());
    20         Cat c=new Cat();
    21         chi(c);
    22         System.out.println();
    23         */
    24         //多态性概念
    25         Animal c1=new Cat();
    26         c1.eat();
    27         Animal d1=new Dog();
    28         d1.eat();
    29         Animal p1=new Pig();
    30         p1.eat();
    31         System.out.println();
    32         //多态性的扩展性表现
    33         chi(new Cat());
    34         chi(new Dog());
    35         chi(new Pig());
    36         
    37     }
    38     //体现封装性的函数
    39     public static void chi(Cat c)
    40     {
    41         c.eat();
    42     }
    43     public static void chi(Dog d)
    44     {
    45         d.eat();
    46     }
    47     public static void chi(Pig p)
    48     {
    49         p.eat();
    50     }
    51     //表现多态性的函数
    52     public static void chi(Animal a)
    53     {
    54         a.eat();
    55     }
    56 }
    57 /*
    58  定义一个父类:动物
    59      子类:猫,狗,猪
    60  */
    61 abstract class Animal
    62 {
    63     public abstract void eat();
    64 }
    65 class Cat extends Animal
    66 {
    67     public void eat()
    68     {
    69         System.out.println("吃鱼");        
    70     }
    71     public void catchMouse()
    72     {
    73         System.out.println("抓老鼠");
    74     }
    75 }
    76 class Dog extends Animal
    77 {
    78     public void eat()
    79     {
    80         System.out.println("吃骨头");
    81     }
    82     public void kanjia()
    83     {
    84         System.out.println("看家");
    85     }
    86 }
    87 class Pig extends Animal 
    88 {
    89     public void eat()
    90     {
    91         System.out.println("吃草");
    92     }
    93 }

     9、多态的转型

     1 /*
     2 多态性转型的实例
     3  */
     4 public class InterfaceDemo
     5 {
     6     public static void main(String[] args) 
     7     {
     8         //多态性概念
     9         /*
    10         Animal c=new Cat();  //类型提升,向上转型
    11         c.eat();
    12         Cat c1=(Cat)c;        //强制向下转型,否则无法使用特定方法
    13         c1.catchMouse();
    14         */
    15         chi(new Cat());
    16         chi(new Dog());
    17         chi(new Pig());
    18     }
    19     //表现多态性的函数
    20     public static void chi(Animal a)   //子类型有限用此方法
    21     {
    22         a.eat();              //吃的食物的类型
    23         if(a instanceof Cat)
    24         {
    25             Cat c=(Cat)a;      //将a对象的从父类强制转型为子类Cat对象
    26             c.catchMouse();
    27         }
    28         else if(a instanceof Dog)
    29         {
    30             Dog d=(Dog)a;
    31             d.kanjia();
    32         }
    33         else 
    34             System.out.println("猪的特定类型是睡觉");
    35     }
    36 }
    37 /*
    38  定义一个父类:动物
    39      子类:猫,狗,猪
    40  */
    41 abstract class Animal
    42 {
    43     public abstract void eat();
    44 }
    45 class Cat extends Animal
    46 {
    47     public void eat()
    48     {
    49         System.out.println("吃鱼");        
    50     }
    51     public void catchMouse()
    52     {
    53         System.out.println("抓老鼠");
    54     }
    55 }
    56 class Dog extends Animal
    57 {
    58     public void eat()
    59     {
    60         System.out.println("吃骨头");
    61     }
    62     public void kanjia()
    63     {
    64         System.out.println("看家");
    65     }
    66 }
    67 class Pig extends Animal 
    68 {
    69     public void eat()
    70     {
    71         System.out.println("吃草");
    72     }
    73     public void sleep()
    74     {
    75         System.out.println("睡觉");
    76     }
    77 }

     10、多态扩展性例子练习

     1 /*
     2 多态性练习:对一个培训班的基础班,提高班,冲刺班的所有学员面向对象编程,学员共有的方法是吃饭和睡觉,睡觉需要重写。
     3  思路:1、定义一个抽象的学生类;
     4      2、利用多态性将多个班的学生方法抽象出来,对外提供所有学生共有特性的的访问接口,通过定义方法类来实现;
     5      3、分别定义学生类的子类:基础班学生,提高班学生,冲刺班学生;
     6      4、调用方法类,实例化学员对象。
     7  */
     8 public class InterfaceDemo
     9 {
    10     public static void main(String[] args) 
    11     {
    12         FunStudent f=new FunStudent();
    13         f.fun(new BaseStudent());
    14         f.fun(new AdvStudent());
    15         f.fun(new SprintStudent());
    16     }
    17 
    18 }
    19 //定义抽象的父类
    20 abstract class Student
    21 {
    22     public abstract void study();  //子类必须实现的方法
    23     public void sleep()
    24     {
    25         System.out.println("躺着睡");
    26     }
    27 }
    28 //定义方法类
    29 class FunStudent
    30 {
    31     public void fun(Student s)
    32     {
    33         s.study();
    34         s.sleep();
    35     }
    36 }
    37 //定义子类
    38 class BaseStudent extends Student
    39 {
    40     public void study()
    41     {
    42         System.out.println("base study");
    43     }
    44     public void sleep()
    45     {
    46         System.out.println("站着睡");
    47     }
    48 }
    49 class AdvStudent extends Student
    50 {
    51     public void study()
    52     {
    53         System.out.println("Adv study");
    54     }
    55 }
    56 class SprintStudent extends Student
    57 {
    58     public void study()
    59     {
    60         System.out.println("sprint study");
    61     }
    62 }

    11、接口多态的逻辑练习

     1 /*
     2 接口多态的逻辑练习:电脑主板,接口,各种外插卡
     3  */
     4 public class Test
     5 {
     6     public static void main(String[] args) 
     7     {
     8         MainBoard mb=new MainBoard();
     9         mb.run();
    10         mb.P(new NetCard());
    11         mb.P(new SoundCard());
    12         mb.P(null);       //主板没有插任何东西
    13     }
    14 
    15 }
    16 //定义一个主板类
    17 class MainBoard
    18 {
    19     public void run()
    20     {
    21         System.out.println("主板在运行");
    22     }
    23     //接口的多态性
    24     public void P(PCI p)
    25     {
    26         if(p!=null)
    27         {
    28             p.open();
    29             p.close();
    30         }
    31     }
    32 }
    33 //定义一个接口
    34 interface PCI
    35 {
    36     public abstract void open();
    37     public abstract void close();
    38 }
    39 //定义一个网卡,执行接口
    40 class NetCard implements PCI
    41 {
    42     public void open()
    43     {
    44         System.out.println("NetCard open");
    45     }
    46     public void close()
    47     {
    48         System.out.println("NetCard close");
    49     }
    50 }
    51 //定义一个声卡,执行接口
    52 class SoundCard implements PCI
    53 {
    54     public void open()
    55     {
    56         System.out.println("SoundCard open");
    57     }
    58     public void close()
    59     {
    60         System.out.println("SoundCard close");
    61     }
    62 }

    12、Object 练习

     1 /*
     2 Object类练习
     3  */
     4 public class Test
     5 {
     6     public static void main(String[] args) 
     7     {
     8         Demo d=new Demo(4);
     9         Demo d1=new Demo(5);
    10         Person p=new Person();
    11         System.out.println(d.toString());
    12         System.out.println(Integer.toHexString(d.hashCode()));
    13         System.out.println(p.toString()); 
    14         Class a=p.getClass();
    15         System.out.println(a.getName());
    16     }
    17 }
    18 class Person
    19 {}
    20 class Demo
    21 {
    22     private int num;
    23     Demo(int x)
    24     {
    25         this.num=x;
    26     }
    27     //对象比较功能在父类Object中存在,所以就重写父类方法即可
    28     public boolean equals(Object obj)  //Object obj=new Demo();
    29     {
    30         Demo o=(Demo)obj;
    31         return this.num==o.num;
    32     }
    33 }

     13、内部类练习1

     1 /*
     2 内部类练习1
     3  */
     4 public class Test
     5 {
     6     public static void main(String[] args) 
     7     {
     8         Outer o=new Outer();
     9         //Outer.Inner i=new Outer().new Inner();  
    10         //new Outer.Inner().function();  //访问内部静态类方法
    11         Outer.Inner.function();
    12         o.method();
    13         //i.function();
    14         //Inner i=new Inner();        //错误
    15         System.out.println();
    16     }
    17 }
    18 class People
    19 {}
    20 
    21 class Outer //外部类
    22 {
    23     private static int a=4;
    24     static class Inner  //内部类
    25     {
    26         static void function()
    27         {
    28             System.out.println("我是内部类");
    29             System.out.println(a);
    30         }
    31     }
    32     void method()
    33     {
    34         Inner.function();
    35         a=32;
    36         //Inner i=new Inner();
    37         //i.function();
    38         System.out.println("我是外部类的方法");
    39     }
    40 }

     14、内部类练习2

     1 /*
     2 内部类练习2
     3  */
     4 public class Test
     5 {
     6     public static void main(String[] args) 
     7     {
     8         //new Outer().method();    //实例化内部类才可以使用此语句
     9         Outer.method();
    10     }
    11 }
    12 class Outer //外部类
    13 {
    14     private static int a=2;
    15     static void method()
    16     {
    17         final int b=4;
    18         final class Inner    //内部类没有定义在成员变量的位置上,不能使用成员变量的修饰符
    19         {
    20             void function()
    21             {
    22                 System.out.println(a);
    23                 System.out.println(b);
    24             }
    25         }
    26         new Inner().function();  //需要实例化内部类
    27     }
    28 }

    15、匿名内部类练习1

     1 /*
     2 匿名内部类练习1
     3  */
     4 public class Test
     5 {
     6     public static void main(String[] args) 
     7     {
     8         new Outer().method();
     9     }
    10 }
    11 //定义一个抽象类
    12 abstract class ab
    13 {
    14     abstract void function();
    15 }
    16 class Outer //外部类
    17 {
    18     int a=2;
    19     /*
    20     class Inner    extends ab   //内部类继承自一个外部的抽象类
    21     {
    22         void function()
    23         {
    24             System.out.println(a);
    25         }
    26     }
    27     */
    28     void method()
    29     {
    30         //new Inner().function(); 
    31         //匿名类对象的的建立,此对象等价于注释部分的内容
    32         /*
    33         new ab()
    34         {
    35             void function()
    36             {
    37                 System.out.println(a);
    38             }
    39             void show()
    40             {
    41                 System.out.println("我是匿名对象");
    42             }
    43         }.function();
    44         new ab()
    45         {
    46             void function()
    47             {
    48                 System.out.println(a);
    49             }
    50             void show()
    51             {
    52                 System.out.println("我是匿名对象");
    53             }
    54         }.show();
    55         */
    56         ab x=new ab()
    57         {
    58             void function()
    59             {
    60                 System.out.println(a);
    61             }
    62             void show()
    63             {
    64                 System.out.println("我是匿名对象");
    65             }
    66         };
    67         //x.show();        //编译失败
    68         x.function();
    69     }
    70 }    

    16、匿名内部类练习2

     1 /*
     2 匿名内部类练习2
     3  */
     4 public class Test1
     5 {
     6     public static void main(String[] args) 
     7     {
     8         Test.function().method();  //给定的条件
     9         //在没有父类和接口的情况下,运行一个function方法
    10         new Object()    //一个Object类的实例对象
    11         {
    12             void function()            //给实例对象添加内容
    13             {
    14                 System.out.println("我是一个奇葩");
    15             }
    16         }.function();
    17     }
    18 }
    19 interface Inter
    20 {
    21     public abstract void method();
    22 }
    23 
    24 class Test
    25 {
    26     //补足代码,通过匿名内部类
    27     /*
    28     static class Inner implements Inter
    29     {
    30         public void method()
    31         {
    32             System.out.println("我是内部类");
    33         }
    34     }
    35     */
    36     static Inter function()
    37     {
    38         //return new Inner();
    39         return new Inter()
    40         {
    41             public void method()
    42             {
    43                 System.out.println("我是内部类");
    44             }
    45         };
    46     }
    47 }

     17、自定义异常

     1 /*
     2 自定义异常:建立一个除法类,因为Java系统中没有负数的异常定义,所以需要自定义负数异常。
     3  */
     4 public class Test1
     5 {
     6     public static void main(String[] args) 
     7     {
     8         Demo d=new Demo();
     9         try
    10         {
    11             d.div(5, -3);
    12         }
    13         catch(FuShuException e)
    14         {
    15             System.out.print(e.toString());
    16             //System.out.println(e.getMessage());
    17             System.out.println(e.fuShu());
    18         }
    19         System.out.println();
    20     }
    21 }
    22 class Demo
    23 {
    24     int div(int x,int y) throws FuShuException //可能出现问题,抛出负数异常
    25     {
    26         if(y<0)
    27             throw new FuShuException("算数中出现了负数,不满足条件!负数是:",y); //抛出一个负数异常对象
    28         return x/y;    
    29     }
    30 }
    31 //自定义异常类
    32 class FuShuException extends Exception //自定义异常类继承自Exceptionl类
    33 {
    34     private int a;    //负数值
    35     FuShuException(String msg,int a)
    36     {
    37         super(msg);
    38         this.a=a;
    39     }
    40     int fuShu()
    41     {
    42         return a;
    43     }
    44 
    45 }

     18、异常的练习

      1 /*
      2 通过异常处理写出一个老师使用电脑授课,电脑出现异常对老师授课产生影响的程序
      3  */
      4 public class ExceptionTest
      5 {
      6     public static void main(String[] args) 
      7     {
      8         Teacher t=new Teacher("李老师");
      9         try
     10         {
     11             t.prelect();
     12         }
     13         catch(StopPrelect e)
     14         {
     15             System.out.println(e.toString()+"开始做练习");
     16         }
     17     }
     18 }
     19 //定义一个老师类
     20 class Teacher
     21 {
     22     String msg;
     23     private Computer com;
     24     Teacher(String msg)
     25     {
     26         this.msg=msg;
     27         com=new Computer(); //com指向Computer类的引用初始化成功,就说明电脑可以正常使用
     28     }
     29     public void prelect() throws StopPrelect
     30     {
     31         try
     32         {
     33             com.run();
     34         }
     35         catch(LanPingException e)  //解决蓝屏异常
     36         {
     37             System.out.println(e.toString());
     38             com.reset();
     39             System.out.println("老师修复了蓝屏异常"+"
    正常上课");
     40         }
     41         catch(MaoYanException e)  //无法解决冒烟异常,再次抛出
     42         {
     43             System.out.println(e.toString()+"
    老师无法修复电脑");
     44             throw new StopPrelect("停止上课");
     45         }
     46     }
     47 }
     48 //定义一个电脑类
     49 class Computer
     50 {
     51     private String state="运行错1"; //定义一个电脑的状态变量,正常运行
     52     public String stateArgument()
     53     {
     54         return state;
     55     }
     56     public void run() throws LanPingException,MaoYanException  //声明两个异常,需要去解决
     57     {    
     58         if(state=="正常运行")
     59             System.out.println("电脑正常运行");
     60         else if(state=="运行错误1")
     61             throw new LanPingException("出现了蓝屏异常");  //抛出一个蓝屏异常对象
     62         else if(state=="运行错误2")
     63             throw new MaoYanException("出现了冒烟异常");    //抛出一个冒烟异常
     64         else
     65             System.out.println("电脑有其它运行错误"+"
    停止授课");
     66     }
     67     public void reset()
     68     {
     69         System.out.println("电脑在重启");
     70     }
     71 }
     72 //定义一个蓝屏异常
     73 class LanPingException extends Exception
     74 {
     75     //private String message;
     76     static final long serialVersionUID=1L;
     77     LanPingException(String message)
     78     {
     79         super(message);
     80     }
     81 }
     82 //定义一个冒烟异常
     83 class MaoYanException extends Exception
     84 {
     85     //private String message;
     86     static final long serialVersionUID=2L;
     87     MaoYanException(String message)
     88     {
     89         super(message);
     90     }
     91 }
     92 //定义一个无法授课的异常
     93 class StopPrelect extends Exception
     94 {
     95     //private String message;
     96     static final long serialVersionUID=3L;
     97     StopPrelect(String message)
     98     {
     99         super(message);
    100     }
    101 }

    19、

    说明:代码基本上是从毕向东老师那里学来的。

  • 相关阅读:
    iPhone将NSString转换编码集为gb2312或者gbk的方法
    iOS下微信语音播放之切换听筒和扬声器的方法解决方案
    苹果开发者各地区联系电话
    iOS开发中,应用内直接跳转到Appstore
    高亮显示UILabel中的子串
    UML
    All Classic Bluetooth profile for iPhone
    智能穿戴设备移动APP端与外设数据传输协议功能模块CMD&ACK表
    Mac 使用技巧分享
    git branch管理小结
  • 原文地址:https://www.cnblogs.com/joeshine/p/4381326.html
Copyright © 2011-2022 走看看