第6章 面向对象(高级篇)

   1、

interface ClassName {
    public String getClassName();
}
class Company implements ClassName {

    @Override
    public String getClassName() {
        return new Company().getClass().getName();
    }
    
}

public class CompanyTest {

    public static void main(String[] args) {
        ClassName cn = new Company();
        System.out.println(cn.getClassName());
    }

}

   2、

class Graph {
    private String color;//颜色
    private String shape;//图形
    
    public Graph(String color, String shape) {
        this.color = color;
        this.shape = shape;
    }

    public String getColor() {
        return color;
    }

    public void setColor(String color) {
        this.color = color;
    }

    public String getShape() {
        return shape;
    }

    public void setShape(String shape) {
        this.shape = shape;
    }
    
}

   3、

class Person {
    private String name;
    private String addr;
    private char sex;
    private int age;
    
    public Person(String name, String addr, char sex, int age) {
        this.name = name;
        this.addr = addr;
        this.sex = sex;
        this.age = age;
    }

    public Person(String name, char sex) {
        this.name = name;
        this.sex = sex;
    }
    
    public Person() {
        
    }
    
    public void show() {
        System.out.println("姓名:"+name+",年龄:"+age+",性别:"+sex+",地址:"+addr);
    }
    
}
class Student extends Person {
    private double math;
    private double english;
    
    public Student(String name, String addr, char sex, int age, double math, double english) {
        super(name, addr, sex, age);
        this.math = math;
        this.english = english;
    }

    public Student(double math, double english) {
        this.math = math;
        this.english = english;
    }
    
    public Student() {

    }
    
    public void show() {
        super.show();
        System.out.println("数学成绩:"+math+",英语成绩:"+english);
    }
    
}

   4、

abstract class Employee {
    private String name;
    private int age;
    private String sex;

    public Employee(String name, int age, String sex) {
        this.name = name;
        this.age = age;
        this.sex = sex;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public abstract void show();
}

class Manager extends Employee {
    private String duty;
    private double salary;

    public Manager(String name, int age, String sex, String duty, double salary) {
        super(name, age, sex);
        this.duty = duty;
        this.salary = salary;
    }

    @Override
    public void show() {
        System.out.println("姓名:"+super.getName()+",年龄:"+super.getAge()+
                ",性别:"+super.getSex()+",职务:"+duty+",年薪:"+salary);
    }

}
class Pro extends Employee {
    private String department;
    private double monthSalary;
    public Pro(String name, int age, String sex, String department, double monthSalary) {
        super(name, age, sex);
        this.department = department;
        this.monthSalary = monthSalary;
    }
    @Override
    public void show() {
        System.out.println("姓名:"+super.getName()+",年龄:"+super.getAge()+
                ",性别:"+super.getSex()+",所属部门:"+department+",月薪:"+monthSalary);
    }
    

   5、

abstract class Shape {
    public abstract void area();
    public abstract void perimeter();
}
class Rectangle extends Shape {
    private double length;
    private double width;
    
    public Rectangle(double length, double width) {
        this.length = length;
        this.width = width;
    }

    @Override
    public void area() {
        System.out.println("area="+length*width);
    }

    @Override
    public void perimeter() {
        System.out.println("perimeter="+(length+width)*2);
    }
    
}
class Circle extends Shape {
    public static final double PI = 3.14;
    private double radius;

    public Circle(double radius) {
        this.radius = radius;
    }

    @Override
    public void area() {
        System.out.println("area="+PI * radius * radius);
    }

    @Override
    public void perimeter() {
        System.out.println("perimeter="+PI * radius * 2);
    }
    
}
class EquilateralTriangle extends Shape {
    private double length;

    public EquilateralTriangle(double length) {
        this.length = length;
    }

    @Override
    public void area() {
        System.out.println("area="+length*length*Math.sqrt(3) / 4);
    }

    @Override
    public void perimeter() {
        System.out.println("perimeter="+length*3);
    }
    
}

   6、形似P223_6.10 实例分析:宠物商店

/*
需求:使用面向对象的概念表示出下面的生活场景:
    小明去超市买东西,所有买到的东西都放在购物车中,最后到收银台一起结账
 */
abstract class Good {
    private String name;          //商品名称
    private double price;         //商品价格
    private int count;            //商品数量
    
    public Good(String name, double price, int count) {
        this.name = name;
        this.price = price;
        this.count = count;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public double getPrice() {
        return price;
    }

    public void setPrice(double price) {
        this.price = price;
    }

    public int getCount() {
        return count;
    }

    public void setCount(int count) {
        this.count = count;
    }
    public abstract String getInfo();
    
}
class Book extends Good {
    private String author;         //作者
    private String publish;        //出版社
    
    public Book(String name, double price, int count, String author, String publish) {
        super(name, price, count);
        this.author = author;
        this.publish = publish;
    }

    @Override
    public String getInfo() {
        return "所购书名:"+super.getName()+",单价:"+super.getPrice()+
                ",购买册数:"+super.getCount()+",作者:"+author+",出版社:"+publish
                +",总计:"+super.getPrice()*super.getCount();
    }
}
class Cloth extends Good {
    private String brand;           //品牌
    private String style;           //款式
    
    public Cloth(String name, double price, int count, String brand, String style) {
        super(name, price, count);
        this.brand = brand;
        this.style = style;
    }

    @Override
    public String getInfo() {
        return "所购衣服名称:"+super.getName()+",单价:"+super.getPrice()+
                ",购买件数:"+super.getCount()+",衣服品牌:"+brand+",衣服样式:"+style
                +",总计:"+super.getPrice()*super.getCount();
    }
    
}
class ShopCar {
    private Good[] goods;
    private int foot = 0;

    public ShopCar(int len) {
        if(len > 0) 
            this.goods = new Good[len];
        else
            this.goods = new Good[1];
    }
    
    public boolean add(Good g) {
        boolean isAdd = false;
        if(foot != goods.length) {
            goods[foot] = g;
            foot++;
            isAdd = true;
        }
        return isAdd;
    }
    
    public Good[] search(String keyWord) {
        Good[] gs = null;
        int count = 0;
        for(int x = 0; x < goods.length; x++) {
            if(goods[x] != null) {
                if(goods[x].getName().indexOf(keyWord) != -1)
                    count++;
            }
        }
        gs = new Good[count];
        for(int i = 0, x = 0; i < goods.length; i++) {
            if(goods[i] != null) {
                if(goods[i].getName().indexOf(keyWord) != -1) {
                    gs[x] = goods[i];
                    x++;
                }
            }
        }
        return gs;
    }

    public Good[] getGoods() {
        return goods;
    }
    
}
public class Practice6 {

    public static void main(String[] args) {
        ShopCar sc = new ShopCar(5);
        sc.add(new Book("Java开发实战经典", 79.80, 1, "李兴华", "清华大学出版社"));
        sc.add(new Book("Thinking In Java", 89.80, 3, "Job", "机械工业出版社"));
        sc.add(new Book("西游记", 45.67, 56, "吴承恩", "商务印书馆"));
        sc.add(new Cloth("T恤", 100.50, 1, "李宁", "男士-L"));
        sc.add(new Cloth("牛仔裤", 356.78, 2, "森马", "男士-M"));
        System.out.println("===================已买到的商品清单===================");
        print(sc.getGoods());
        System.out.println("===================查询商品详细信息===================");
        try {
            print(sc.search(args[0]));
        } catch(Exception e) {
            System.out.println("未输入要查询商品或输入错误,"+"格式为:
java Practice6  商品名(或商品名中的任意字符)");
        }
    }

    private static void print(Good[] goods) {
        if(goods != null)
            for(int x = 0; x < goods.length; x++) {
                System.out.println(goods[x].getInfo());
            }
    }

}
原文地址:https://www.cnblogs.com/yerenyuan/p/5240564.html