对象

1.面向对象和面向过程的区别?

   面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。

  面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。

2.继承的特点?

a.只支持单继承
b.不能多继承
c.支持单层继承


每一款手机都有自己的品牌和价格,原来的手机只能打电话,发短信;现在的新手机,在打电话和发短信的基础上还能玩儿游戏,请设计程序,完成手机的升级!
1定一个OldPhone类,定义两个私有属性brand和price,定义空参和有参构造方法,get/set方法
2.在OldPhone类中,定义一个打电话的方法,传递姓名的参数,方法体内输出给谁打电话
3.在OldPhone类中,定义一个发短信的方法,直接输出"发短信"
4.定一个子类NewPhone,继承OldPhone类,在子类中定义玩游戏的特有方法,直接输出内容"玩游戏"
5.定义测试类,创建NewPhone类对象,调用set方法为属性赋值,调用get方法获取属性值
6.调用从父类中继承过来的方法以及自己特有的方法.

 

//父类-->OldPhone
public class OldPhone {
   private String brank;
   private double price;

   public OldPhone() {
  }

   public OldPhone(String brank, double price) {
       this.brank = brank;
       this.price = price;
  }

   public String getBrank() {
       return brank;
  }

   public void setBrank(String brank) {
       this.brank = brank;
  }

   public double getPrice() {
       return price;
  }

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

   //打电话
   public void call(String name){
       System.out.println("给"+name+"打电话!");
  }

   //发短信
   public void message(){
       System.out.println("发短信!");
  }
}
//子类->NewPhone
public class NewPhone extends OldPhone{
   //特有内容
   public void playGame(){
       System.out.println("玩儿游戏");
  }
}
//测试类
public class Test {
   public static void main(String[] args) {
       //创建NewPhone类对象
       NewPhone newPhone = new NewPhone();
       //调用set方法为属性赋值
       newPhone.setBrank("苹果");
       newPhone.setPrice(6399);
       //调用get方法获取属性值
       System.out.println("新手机的品牌为:"+newPhone.getBrank()+",新手机的价格为:"+newPhone.getPrice());
       //调用从父类中继承过来的方法
       newPhone.call("小勇");
       newPhone.message();
       //调用自己的特有方法
       newPhone.playGame();
  }
}

 


 

 

每一款手机都有自己的品牌和价格,原来的手机只能打电话,发短信,来电显示只能显示手机号;现在的新手机针对于来电显示做了功能的升级,还能显示头像,还能显示归属地,请设计程序,完成手机的升级!

 

定义一个老手机类,包含品牌和价格两个属性,对应的构造,get/set方法,还有打电话,和发短信的方法,来电显示的方法
定义一个新手机,继承老手机类,重写来电显示方法进行升级
最后在测试类中为属性赋值,调用继承过来的方法以及来电显示方法

操作步骤

1.定一个OldPhone类,定义两个私有属性brand和price,定义空参和有参构造方法,get/set方法
2.在OldPhone类中,定义一个打电话的方法,传递姓名的参数,方法体内输出给谁打电话
3.在OldPhone类中,定义一个发短信的方法,直接输出"发短信"
4.定义一个来电显示的方法,输出内容为"显示手机号",
4.定一个子类NewPhone,继承OldPhone类,在子类中重写来电显示的方法,输出内容为"显示手机号","显示归属地","显示头像"
5.定义测试类,创建NewPhone类对象,调用set方法为属性赋值,调用get方法获取属性值
6.调用从父类中继承过来的方法以及重写的方法

 

//父类-->老手机
public class OldPhone {
   private String brand;
   private double price;

   public OldPhone() {
  }

   public OldPhone(String brand, double price) {
       this.brand = brand;
       this.price = price;
  }

   public String getBrand() {
       return brand;
  }

   public void setBrand(String brand) {
       this.brand = brand;
  }

   public double getPrice() {
       return price;
  }

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

   //定义打电话方法
   public void call(String name){
       System.out.println("给"+name+"打电话!");
  }

   //发短信
   public void message(){
       System.out.println("发短信!");
  }

   //来电显示
   public void show(){
       System.out.println("显示手机号!");
  }

}
//新手机
public class NewPhone extends OldPhone {
   //来电显示功能升级方法
   public void show() {
       super.show();
       System.out.println("显示归属地!");
       System.out.println("显示头像!");
  }
}
//测试类
public class Test {
   public static void main(String[] args) {
       //创建子类对象
       NewPhone newPhone = new NewPhone();
       //调用set方法为属性赋值
       newPhone.setBrand("苹果");
       newPhone.setPrice(9800);
       //调用get方法获取属性值
       System.out.println("手机品牌为:"+newPhone.getBrand()+",价格为:"+newPhone.getPrice());
       //调用继承过来的方法
       newPhone.call("柳岩");
       newPhone.message();
       //调用重写后的方法
       newPhone.show();
  }
}

 


 

 

 白色4条腿的北极熊(Bear)会吃(吃蜂蜜)和抓鱼(catchFish)
黑色4条腿的大熊猫(Panda)会吃(吃竹子)和爬树(climbTree)
要求: 把北极熊和大熊猫的共性提取动物类(Animal)中,使用抽象类

操作步骤

1.定义一个Animal类,定义两个私有属性(颜色:color,个数:numOfLegs).对应的构造以及get/set方法
2.在Animal中定义一个抽象方法eat()
3.定义子类Bear(北极熊) 继承Animal类,重写父类中的抽象方法eat(),方法体输出 "白色4腿的北极熊在吃蜂蜜"
定义特有方法catchFish(),方法体输出"白色4腿的北极熊在抓鱼"
4.定义子类Panda(熊猫)继承Animal类,重写父类中的抽象方法eat(),方法体输出 "黑色4条腿的大熊猫在吃竹子"
定义特有方法climbTree(),方法体输出"黑色4条腿的大熊猫在爬树"
5.定义测试类,创建北极熊对象,为属性赋值,调用重写的方法以及特有方法
创建大熊猫对象,为属性赋值,调用重写的方法以及特有方法

 

//动物类
public abstract class Animal {
   //动物颜色
   private String color;
   //动物腿的个数
   private int numOfLegs;

   //提供带参构造和setXxx和getXxx方法
   public Animal() {
       super();
  }
   public Animal(String color, int numOfLegs) {
       super();
       this.color = color;
       this.numOfLegs = numOfLegs;
  }
   public String getColor() {
       return color;
  }
   public void setColor(String color) {
       this.color = color;
  }
   public int getNumOfLegs() {
       return numOfLegs;
  }
   public void setNumOfLegs(int numOfLegs) {
       this.numOfLegs = numOfLegs;
  }

   //定义吃东西的抽象方法
   public abstract void eat();

}
//北极熊类
public class Bear extends Animal {

   public Bear() {
       super();
  }

   public Bear(String color, int numOfLegs) {
       super(color, numOfLegs);
  }

   public void eat() {
       System.out.println(getColor() + getNumOfLegs() + "腿的北极熊在吃蜂蜜");
  }

   public void catchFish() {
       System.out.println(getColor() + getNumOfLegs() + "腿的北极熊在抓鱼");
  }
}
//大熊猫类
public class Panda extends Animal {

   public Panda() {
       super();
  }

   public Panda(String color, int numOfLegs) {
       super(color, numOfLegs);
  }

   public void eat() {
       System.out.println(getColor() + getNumOfLegs() + "条腿的大熊猫在吃竹子");
  }

   public void climbTree() {
       System.out.println(getColor() + getNumOfLegs() + "条腿的大熊猫在爬树");
  }
}
//测试类
public class Test {
   public static void main(String[] args) {
       //1. 创建北极熊对象 b,颜色赋值为白色,腿的个数赋值为4
       Bear b = new Bear("白色", 4);
       //2. 调用北极熊对象b的吃方法
       b.eat();
       //3.调用北极熊对象b的抓鱼方法
       b.catchFish();
       //4. 创建大熊猫对象 p,颜色赋值为黑色,腿的个数赋值为4
       Panda p = new Panda("黑色", 4);
       //5. 调用大熊猫对象p的吃方法
       p.eat();
       //6. 调用大熊猫对象p的爬树方法
       p.climbTree();
  }
}

 

 

 

有很多员工(Employee),按照工作内容不同分教研部员工(Teacher)和行政部员工(AdminStaff)
教研部根据教学的方式不同又分为讲师(Lecturer)和助教(Tutor)
行政部根据负责事项不同,有分为维护专员(Maintainer),采购专员(Buyer)
公司的每一个员工都编号,姓名和其负责的工作
工作内容:    
讲师: 工号为 666 的讲师 乔峰 在讲课
助教: 工号为 668的助教 段誉 在帮助学生解决问题
维护专员: 工号为 686 的维护专员 柳岩 在解决不能共享屏幕问题
采购专员: 工号为 888 的采购专员 景甜 在采购音响设备


 

1.抽取共有的id name work()方法,形成员工类父类
2.教研部类和行政部类继承员工类
3.定义讲师类和助教类继承教研部类,重写work方法
4.定义维护类和采购类,继承行政类,重写work方法

 

1.定义员工类Employee,定义两个私有属性id,name,提供对应的构造,get/set方法,并提供抽象方法work
2.定义Teacher类继承Employee类
3.定义AdminStaff类继承Employee类
4.定义Lecturer(讲师)类继承Teacher类,重写work方法,输出"工号为 666 的讲师 乔峰 在讲课"
5.定义Tutor(助教)类继承Teacher类,重写work方法,输出"工号为 668的助教 段誉 在帮助学生解决问题"
6.定义Maintainner(维护)类继承AdminStaff类,重写work方法,输出"工号为 686 的维护专员 柳岩 在解决不能共享屏幕问题"
7.定义Buyer(采购)类继承AdminStaff类,重写work方法,输出"工号为 888 的采购专员 景甜 在采购音响设备"
8.定义测试类,分别创建讲师类,助教类,维护类,采购类对象分别为属性赋值,并调用重写的work方法

 

//员工类
public abstract class Employee {
   private String id;
   private String name;
   public abstract void work();

   public Employee() {
       super();
  }
   public Employee(String id, String name) {
       super();
       this.id = id;
       this.name = name;
  }

   public String getId() {
       return id;
  }
   public void setId(String id) {
       this.id = id;
  }
   public String getName() {
       return name;
  }
   public void setName(String name) {
       this.name = name;
  }

}
//教研部类
public abstract class Teacher extends Employee{
   public Teacher() {
  }

   public Teacher(String id, String name) {
       super(id, name);
  }
}
//行政部类
public abstract class AdminStaff extends Employee{
   public AdminStaff() {
  }

   public AdminStaff(String id, String name) {
       super(id, name);
  }
}
//讲师类
public class Lecturer extends Teacher{
   //提供无参和带参的构造方法
   public Lecturer() {
       super();
  }
   public Lecturer(String id, String name) {
       super(id, name);
  }

   //实现抽象方法: void work();
   //输出格式: 工号为 666 的讲师 乔峰 在讲课
   public void work() {
       System.out.println("工号为 "+getId()+" 的讲师 "+getName()+" 在讲课");
  }
}
//助教类
public class Tutor extends Teacher{
   //提供无参和带参的构造方法
   public Tutor() {
       super();
  }

   public Tutor(String id, String name) {
       super(id, name);
  }
   //实现抽象方法: void work();
   //输出格式: 工号为 668的助教 段誉 在帮助学生解决问题
   public void work() {
       System.out.println("工号为 "+getId()+"的助教 "+getName()+" 在帮助学生解决问题");
  }
}
//维护人员类
public class Maintainer extends AdminStaff{
   //提供无参和带参的构造方法
   public Maintainer() {
       super();
  }

   public Maintainer(String id, String name) {
       super(id, name);
  }
   //实现抽象方法: void work();
   //输出格式: 工号为 686 的维护专员 柳岩 在解决不能共享屏幕问题
   public void work() {
       System.out.println("工号为 "+getId()+" 的维护专员 "+getName()+" 在解决不能共享屏幕问题");
  }

}
//采购人员类
public class Buyer extends AdminStaff{
   //提供无参和带参的构造方法
   public Buyer() {
       super();
  }

   public Buyer(String id, String name) {
       super(id, name);
  }
   //实现抽象方法: void work();
  //输出格式: 工号为 888 的采购专员 景甜 在采购音响设备
   public void work() {
       System.out.println("工号为 "+getId()+" 的采购专员 "+getName()+" 在采购音响设备");
  }
}
//测试类
public class Test {
   public static void main(String[] args) {
// a)创建讲师对象 l, 把工号赋值为666,姓名赋值为”傅红雪”
       Lecturer l = new Lecturer("666", "乔峰");
// b)调用讲师对象l的工作方法
       l.work();
// c)创建助教对象 t, 把工号赋值为668,姓名赋值为”顾棋”
       Tutor t = new Tutor("668", "段誉");
// d)调用助教对象t的工作方法
       t.work();
// e)创建维护专员对象 m, 把工号赋值为686,姓名赋值为”庖丁”
       Maintainer m = new Maintainer("686", "柳岩");
// f)调用维护专员对象m的工作方法
       m.work();
// g)创建采购专员对象 b, 把工号赋值为888,姓名赋值为”景甜”
       Buyer b = new Buyer("888", "景甜");
// h)调用采购专员对象b的工作方法
       b.work();
  }
}

 

posted @ 2022-06-05 21:34  怎样的人生  阅读(264)  评论(0)    收藏  举报