抽象类案例abstract

    xiaoxiao2021-12-14  38

    /*抽象类:在提取父类的过程中,某一个共性方法子类各自不同的实现方式,  * 那么该方法需要修饰为abstract,该类就是抽象类的了  *   *抽象类的特点:  *1:抽象类不能创建对象,因为含有对象的方法  *2:继承了抽象类的子类,没有重写父类中的抽象方法,那么该子类还是抽象类  *3:抽象类一定是父类  *4:抽象类也有构造方法的   抽象类和普通类的区别:   相同点:都是类,都是在描述事物   不同点:   ①抽象类不能创建对象,普通类可以创建对象   ②抽象可以含有抽象方法,普通类不能含有抽象方法     *5:抽象类不嫩隔阂哪里关键字同时使用?  ①不能和final:因为final修饰的方法不能重写,abstract修饰的方法必须能被重写,2者冲突,因此不能同时使用  ②不能和static:因为static修饰的方法可以直接通过类名调用,abstract修饰的方法不能通过类名调用  ③不能和private:应为priavate修饰的方法不能被子类重写,abstract修饰的方法必须能被重写    6.抽象类一定含有抽象方法吗?  不一定的:含有抽象方法的一定是抽象类,当不希望这个类创建对象时,就可以把该类修饰类abstract抽象类。  *  *例如有2个类,狼类,和父类,他们都有一个行为就是叫  *他们都属于犬类,可以提取一个父类出来,因此有父类犬类  *无法定义是谁叫,因此,会把这个方法抽象,注意:这个类也要是抽象的  */ package item; //案例1:狼和狗的共同行为叫,都属于犬科 abstract class Qianke { public  abstract void haojiao();//没有实现的方法使用abstract来修饰,还不知道是汪汪叫还是嗷嗷叫, } class Lang  extends Qianke//狼类 { public void haojiao() { System.out.println("嗷嗷叫lang"); } } class Dog extends Qianke//狗类 { public void haojiao() { System.out.println("汪汪叫dog"); } } public class TestAbstract { public static void main(String[] args) {   // Shape s=new Shape();//不能NEW会报错,抽象类不能创建对象 //案例2演示: Rectangle rle=new Rectangle(6,3); System.out.println("矩形面积="+rle.getArea()); } } //案例2:计算圆形和矩形的面积,//圆形和矩形都一个共性是形状父类,都是求面积 abstract class Shape { public abstract double getArea();   } abstract class Circleyx extends Shape { private double radius; Circleyx(double radius) { this.radius=radius; } //继承了父类中的抽象方法,含有抽象方法,如果没有重写该抽象方法,那么该类也是抽象类   } class Rectangle extends Shape { private double length; private double width; Rectangle(double length,double width) { this.length=length; this.width=width; } public double getArea()//重写构造方法后,就可以使此类不是抽象类 { return this.length*this.width; }

    }

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

    /**抽象类案例3:  * 需求:公司中程序员有姓名:工号,薪水,工作内容,  * 项目经理除了有姓名,工号,薪水,还有奖金,工作内容  * 给出需求进行数据建模、  */ package item; abstract class Employee//分析:程序员和经理都是员工 { private String name;//姓名 private String id;//工号 private double money;//薪水 public  Employee(){} public  Employee(String name,String id,double money) {//为了方便初始化,因此写构造方法 this.name=name; this.id=id; this.money=money; } public abstract void work();//工作行为 } class Programmer extends Employee //程序员类 { public Programmer(){} public Programmer(String name,String id,double money) { super(name,id,money);//调用类的构造函数 public void work() { System.out.println("程序员的职责是:写代码"); } } class Manager extends Employee//项目经理类 { private double bonus;//奖金 public Manager(){} public Manager(String name,String id ,double money,double bouns) { super(name,id,money); this.bonus=bouns; } public void work() { System.out.println("项目经理的职责是:管理程序员"); } } public class TestAbstract3 { public static void main(String[] args) { Programmer programmer=new Programmer("张三","1001",15000); programmer.work(); Manager manager=new Manager("李四","1002",25000,500); manager.work(); } } /**演示结果:  程序员的职责是:写代码 项目经理的职责是:管理程序员  * **/

    转载请注明原文地址: https://ju.6miu.com/read-971449.html

    最新回复(0)