07_01.【Java】面向对象编程核心技术-类的三大特征(封装、继承、多态)

类的三大特征

在这里插入图片描述

一、封装

封装的载体是类,且对象的属性和行为被封装在这个类中。在面向对象程序设计方法中,封装(英语:Encapsulation)是指类将对象的属性和行为隐藏起来,对客户隐藏其实现细节的思想。封装可以被认为是一个程序的保护屏障,防止该类的代码和数据被外部类定义的代码随机访问。如果想要访问该类的代码和数据,必须通过严格的接口进行。合适的封装可以可以增强代码的易维护性和安全性。

实例1:"被封装的厨师"为顾客做一道香辣肉丝

顾客到一家餐厅去吃饭,点了一盘香辣肉丝,觉得很好吃,顾客就像知道厨师的名字,希望厨师再为自己多做点事情。按照日常生活场景来讲,去餐馆吃饭,下单的是服务员,上菜的也是服务员,厨师被封装在参观中,顾客无法直接接触到厨师。

package Applications;

public class Restaurant {
   
	private Cook cook = new Cook();       //1、餐厅封装的厨师类
	public void takeOrder(String dish) {
      //2、定义下单成员方法(点菜提供服务、不提供其他服务)
		cook.cooking(dish);       //3、通知厨师做菜(洗菜、切菜、开始烹饪)
		System.out.println("您的菜好了,请慢用");   //4、通知顾客菜好了
	}
	public String saySorry() {
   
		return "抱歉,餐厅不提供此项服务";
	}
	public static void main(String[] args) {
     //类的主方法
		// TODO Auto-generated method stub
		Restaurant waiter = new Restaurant();  //创建服务员对象,为顾客提供服务
		System.out.println("请让厨师帮我做一份香辣肉丝。****"); 
		waiter.takeOrder("香辣肉丝");
		System.out.println("厨师名字是什么。****"); 
		System.out.println(waiter.saySorry()); 
		System.out.println("我需要厨师帮我添加一些葱花。****"); 
		System.out.println(waiter.saySorry()); 
	}
	
	class Cook{
             //厨师开始准备和做菜
		private String name;
		public Cook() {
        //用构造方法定义厨师对象
			//成员变量和方法变量参数重复,用this将方法变量值传递给成员变量
			this.name = "Tom";   //做菜的厨师是Tom
		}
		private void washVegetavles() {
   
			//定义洗菜成员方法
			System.out.println(name+"洗菜");//Tom洗菜
		}
		private void cutOnion() {
   
			//定义做菜成员方法
			System.out.println(name+"切辣椒丝");//Tom切菜
		}
		void cooking(String dish){
      //Tom做菜
			washVegetavles();
			cutOnion();
			System.out.println(name+"开始烹饪"+dish);
		}	
	}
}
console:
请让厨师帮我做一份香辣肉丝。****
Tom洗菜
Tom切辣椒丝
Tom开始烹饪香辣肉丝
您的菜好了,请慢用
厨师名字是什么。****
抱歉,餐厅不提供此项服务
我需要厨师帮我添加一些葱花。****
抱歉,餐厅不提供此项服务

封装的艺术体现:

  • 先由服务员和顾客交流,再由服务员和厨师交流
  • 整个过程厨师没有和顾客交流
  • 作为顾客不知道自己的菜是哪位厨师用什么方法做的

二、继承

继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类。

继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。

子类和父类的继承关系可以这样理解:四边形(F)包括平行四边形、矩形、菱形、梯形(S)。其中S继承了F的一些属性(包括有四条边,内角和为360度等),同时又新添加了一些自己的特有属性和方法(比如平行四边形两对边平行等)。我们可以说平行四边形是四边形,但是不能说四边形是平行四边形。同理,Java中我们可以说子类的实例都是父类的实例,但是不能说父类的实例是字类的实例。

继承实际上是实现重复利用的重要手段,子通过继承,复用父类属性和行为的同时又添加字类特有的属性和行为。提高代码编写效率的同时,保持程序的可延展性,以满足解决各类不同实际问题的需求。

继承的基本思想是基于某个父类的拓展,并制定出一个新的子类,子类可以继承父类原有的属性和方法,也可以增加原来父类所不具备的属性和方法,或者直接重写父类中的默写方法。

1、extend关键字

在Java中,让一个类继承另一个类需要使用extend关键字:

Child extend Parents

子类在继承父类的同时,也继承了父类中的属性和方法。

实例2:使用继承表现pad和Computer的关系

创建一个电脑类Computer,Computer类中有屏幕属性screen、开机方法startup()。现在Computer类有一个子类Pad,除了和Computer类具有相同的屏幕属性和开机方法外,Pad类还有电池属性battery,使用继承表现pad和Computer的关系:

package Applications;

class Computer {
       //父类
	String screen = "液晶显示屏";  //父类属性
	void startup() {
     //父类方法
		System.out.println("电脑正在开机,请稍等!");
	}
}
public class Pad extends Computer{
   
	String battery = "5000mA";
	public static void main(String[] args) {
   
		// TODO Auto-generated method stub
		Pad pc = new Pad();
		System.out.println("Computer的屏幕是"+pc.screen);
		pc.startup();
		Pad ipad = new Pad();
		System.out.println("Pad的屏幕是"+ipad.screen);
		System.out.println("Pad的电池是"+ipad.battery);
		ipad.startup(
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值