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

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

范例:为抽象类实例化

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();                                                       //工人说工人的内容

       }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值