7.1 类的封装
封装是面向对象编程的核心思想,将对象的属性和行为封装起来,其载体就是类。本节将详细扫一扫,看介绍如何将类封装。
例7.1创建R1这个类,实现餐馆点菜的场景.
-
public class R1 { public static void main(String[] args) { String cookName="Tom Cruise";//厨师的名字叫 Tom Cruise System.out.println("**请让厨师为我做一份香辣肉丝。***"); System.out.println(cookName +"切葱花"); System.out.println(cookName+"洗蔬菜"); System.out.println(cookName +"开始烹饪"+"香辣肉丝"); System.out.println("**请问厨师叫什么名字?***"); System.out.println(cookName); System.out.println("**请让厨师给我切一点葱花。***"); System.out.println(cookName + "切葱花"); } }
例7.2将厨师封装成cook类,实现餐馆点菜的场景.
-
public class R2 { public static void main(String[] args) { Cook1 cook =new Cook1();// 创建厨师类的对象 System.out.println("**请让厨师为我做一份香辣肉丝。"); cook.cooking("香辣肉丝");//厨师烹饪香辣肉丝 System.out.println("**你们的厨师叫什么名字?***"); System.out.println(cook.name);//厨师回答自己的名字 System.out.println("**请让厨师给我切一点葱花。***"); cook.cutOnion();// 厨师去切葱花 }} class Cook1{ String name;//厨师的名字 public Cook1() { this.name ="Tom Cruise";}//厨师的名字叫Tom Cruise void cutOnion() {//厨师切葱花 System.out.println(name +"切葱花"); } void washVegetables(){//厨师洗蔬菜 System.out.println(name+"洗蔬菜"); } void cooking(String dish) {//厨师烹饪顾客点的菜 washVegetables(); cutOnion(); System.out.println(name+"开始烹饪"+dish); } }
将厨师单独封装成一个类,将厨师的工作定义成厨师类的行为,当我们想让厨师做菜,只能通过调用对象成员方法的方式实现,而我们却不知道这个方法到底是怎么写的,所以就无法随意修改了。餐馆没有义务告诉我们厨师的任何信息,并且厨师也不会随意受我们差遣,所以说厨师有些属性和行为不公开
例7.3将厨师的属性和部分法方法用private修饰
public class R3 { public static void main(String[] args) { Cook2 cook =new Cook2();//创建厨师类的对象 System.out.println("**请让厨师为我做一份香辣肉丝。"); cook.cooking("香辣肉丝");//厨师烹饪香辣肉丝 System.out.println("**你们的厨师叫什么名字?"); System.out.println(cook.name);//厨师回答自己的名字 System.out.println("**请让厨师给我切一点葱花。***"); cook.cutOnion();// 厨师去切葱花 }} class Cook2{ private String name;//厨师的名字 public Cook2() { this.name ="Tom Cruise"; }//厨师的名字叫Tom Cruise private void cutOnion() {//厨师切葱花 System.out.println(name+"切葱花"); } private void washVegetables() {//厨师洗蔬菜 System.out.println(name+ "洗蔬菜"); } void cooking(String dish) {//厨师烹饪顾客点的菜 washVegetables(); cutOnion(); System.out.println (name+"开始烹饪"+ dish); } }
从这个例子我们就能看出,作为顾客,我始终是和服务员进行交流,再由服务员与厨师进行交流,整个过程中,顾客与厨师是完全没有交集的。作为顾客,我不知道我品尝的美食是由哪在厨师用何种方法烹饪出来的,这种编程模式,就是封装。
将对象的属性和行为封装起来的载体就是类,类通常对客户隐藏其实现细节,这就是封装的思想。7.2 类的继承的
继承在面向对象开发思想中是一个非常重要的概念,它使整个程序架构具有一定的弹性,在程序中复用已经定义完善类不仅可以减少软件开发周期,还可以提高软件的可维护性和可扩展性。本节将详细讲解类的继承。
在第6章中曾简要介绍过继承,其基本思想是基于某个父类的扩展,制定出一个新的子类,子米可以继承父类原有的属性和方法,也可以增加原来父类所不具备的属性和方法,或者直接重写父可以说平行