第七章 面向对象核心技术

本文详细介绍了面向对象编程的核心概念,包括类的封装、继承和多态。通过实例展示了如何创建类、重写方法以及如何使用Object类。还探讨了内部类、静态内部类的特性,以及静态内部类在主方法测试中的应用。同时,文章提到了构造函数的重载、方法的重写和重构,以及向上转型和向下转型的概念。
摘要由CSDN通过智能技术生成

7.1 类的封装

封装是面向对象编程的核心思想,将对象的属性和行为封装起来,其载体就是类。本节将详细扫一扫,看介绍如何将类封装。

例7.1创建R1这个类,实现餐馆点菜的场景.

 
  1. 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类,实现餐馆点菜的场景. 

  2. 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章中曾简要介绍过继承,其基本思想是基于某个父类的扩展,制定出一个新的子类,子米可以继承父类原有的属性和方法,也可以增加原来父类所不具备的属性和方法,或者直接重写父可以说平行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值