`
hcjdiy
  • 浏览: 5618 次
  • 性别: Icon_minigender_1
  • 来自: 南昌
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

抽象类与接口的应用(一)

阅读更多

. 一个类永远不要去继承一个已经实现好的类,而只能继承抽象类或实现接口

范例:为抽象类实例化

abstract class A{                         //定义抽象类A

       public abstract void print();   //定义抽象方法print()

}

class B extends A{                       //子类继承抽象类

       public void print(){

              System.out.println("Hello world!");

       }

}

public class AbstractCaseDemo01{

       public static void main(String args[]){

              A a = new B();                     //通过子类为抽象类实例化

              a.print();                       //调用的方法是被子类覆写过的方法

       }

}

范例:为接口实例化

interface  A{                      //定义接口A

       public void print();  //定义抽象方法print()

}

class B implements A{                 //子类实现接口

       public void print(){

              System.out.println("Hello world!");

       }

}

public class InterfaceCaseDemo01{

       public static void main(String args[]){

              A a = new B();                     //通过子类为抽象类实例化

              a.print();                       //调用的方法是被子类覆写过的方法

       }

}

抽象类的实际应用-->模板设计

范例:抽象类的实际应用

abstract class Person{                        //定义抽象类Person

       private String name;                     //定义name属性

       private int age;                            //定义age属性

       public Person(String name,int age){            //为属性初始化

              this.name = name;                              //name属性赋值

              this.age = age;                                    //age属性赋值

       }

       public String getName(){                           //取得name属性内容

              return name;

       }

       public int getAge(){                                   //取得age属性内容

              return age;

       }

       public void say(){                                      //说话是具体功能,要定义成普通方法

              System.out.println(this.getContent());

       }

       public abstract String getContent();      //说话内容由子类定义

}

class Student extends Person{                           //定义Student继承Person

       private float score;                             

       public Student(String name,int age,float score){

              super(name,age);                                //调用父类中构造方法

              this.score = score;        

       }

       public String getContent(){                         //覆写父类中的抽象方法

              return "学生信息-->姓名:"+super.getName()+

                            ",年龄:"+super.getAge()

                            +",成绩:"+this.score;

       }

}

class Worker extends Person{                           //定义Worker继承Person

       private float salary;

       public Worker(String name,int age,float salary){ 

              super(name,age);                                //调用父类中构造方法

              this.salary = salary;

       }

       public String getContent(){                         //覆写父类中的抽象方法

              return "工人信息-->姓名:"+super.getName()+

                            ",年龄:"+super.getAge()

                            +",工资:"+this.salary;

       }

}

public class AbstractCaseDemo02{

       public static void main(String args[]){

              Person per1 = null;                             //声明Person对象

              Person per2 = null;                             //声明Person对象

              per1 = new Student("张三",20,90.0f);  //学生是一个人

              per2 = new Worker("李四",30,3000.0f);      //工人是一个人

              per1.say();                                                       //学生说学生的内容

              per2.say();                                                       //工人说工人的内容

       }

}

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics