Java第七章总结(面向对象核心技术)

本文详细介绍了Java中的面向对象特性,包括封装、类的继承、多态的概念及其应用。通过实例解析了类的封装思想,如属性和行为的隐藏,以及如何通过类的继承和多态提高代码的复用性和灵活性。同时,文章讨论了访问控制、内部类以及抽象类和接口的使用,帮助读者深入理解Java面向对象编程。
摘要由CSDN通过智能技术生成

目录

7.1 类的封装

7.2 类的继承

7.2.1 extends关键字

7.2.2 方法的重写

7.2.3 所有类的父类 —— Object 类

7.3 类的多态

7.3.1 方法的重载

7.3.2 向上转型

7.3.3 向下转型

7.3.4 instanceof 关键字

7.4 抽象类与接口

7.4.1 抽象类与抽象方法

7.4.2 接口的申明与实现

7.4.3 多重继承

7.4.4 区分抽象类与接口

7.5 访问控制

7.5.1 访问控制符

7.5.2 Java 类包

7.5.3 final 关键字

7.6 内部类

7.6.1 成员内部类

7.6.2 局部内部类

7.6.3 匿名内部类

7.6.4 静态内部类

7.6.5 内部类的继承

7.1 类的封装

7.2 类的继承

7.2.1 extends关键字

7.2.2 方法的重写

7.2.3 所有类的父类 —— Object 类

7.3 类的多态

7.3.1 方法的重载

7.3.2 向上转型

7.3.3 向下转型

7.3.4 dinstanceof 关键字

7.4 抽象类与接口

7.4.1 抽象类与抽象方法

7.4.2 接口的申明与实现

7.4.3 多重继承

7.4.4 区分抽象类与接口

7.5 访问控制

7.5.1 访问控制符

7.5.2 Java 类包

7.5.3 final 关键字

7.6 内部类

7.6.1 成员内部类

7.6.2 局部内部类

7.6.3 匿名内部类

7.6.4 静态内部类

7.6.5 内部类的继承


先复习一下: * 封装就是面向编程的核心思想,将对象的属性和行为封装起来,其载体就是类。

import java.util Arrays;
/*
面向过程:当需要实现一个功能的时候,每一个具体步骤都要亲历亲为,详细处理每一细节齾。
面向对象:当需要实现一个功能的时候,不关心具体步骤,而是找一个已经具有该功能的人,来帮我做事。
*/
public class Demo09PrintArray {
      
      public static void main(String[] args) {
                int[] array = {10,20,30,40,50,60};

         //要求打印格式为:[10,20,30,40,50]
         //使用面向对象,每一个过程都要亲历亲为。
         System.out.print("[");
         for (int i = 0; i < array.length;i++);
              if (i == array.length - 1) { //如果是最后一个元素
                     System.out.println(array[i] +"]");
         }
    }
    System.out.println("==============================");
    
    //使用面向对象
    //找一个JDK给我们提供好的Arrays类
    //其中有一个toString方法,直接就能把数组变成想要的格式的字符串
    System.out.println(Arrays.toString(array));  (加上60也不影响结果)
    }
}
 

面向过程和面向对象的区别在于:它区别于面向过程思想,强调的是通过阅读调用对象的行为来实现功能,而不是自己一步一步的去操作实现。

举栗子(简称人类偷懒行为):

洗衣服:

* 面向过程:把衣服脱下来->找一个盆->放点洗衣粉->加点水->浸泡10分钟->揉一揉->清洗衣服->拧干->晾起来

*面向对象:把衣服脱下来->打开全自动洗衣机->扔衣服->按钮->晾起来

区别: 面向对象:强调步骤。     面向对象:强调对象,这里的对象是洗衣机。

特点:面向对象思想是一种更符合我们思考习惯的思想,它可以将复杂的事情简单化,并将我们从执行者变成了指挥者。面向对象的语言中,包含了三大基本特征,即封装,继承和多态。

类和对象 :环顾四周,你会发现很多对象,比如桌子,椅子,同学,老师等。桌椅属于办公用品,师生都是人类。

*类:是一组相关属性和行为的集合,可以看成是一类事物的模板,使用事物的属性特征和行为特征来描述该类事物。

现实中,描述一类事物:

* 属性:就是该事物的状态信息。         * 行为:就是该事物能做什么。

举栗:小猫。   属性:名字,体重,年龄,颜色。

行为:走,跑,跳,叫。

类和对象的关系:

7.1 类的封装

通过解读栗子来理解封装,eg:我们到一个餐馆去吃饭,点了一盘鱼香肉丝,感觉好吃,我想知道厨师的名字,希望厨师多帮我做点儿事。

如果这个场景用Java代码毫无封装的实现,就是这样的:

public class  Restaurant1 {
   public static viod 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 + "切葱花");

此例子里面,所有逻辑代码全是在main方法中实现的,代码完全暴露,我们可以任意删改。如果可以任意删改,餐馆便无法正常运行,比如:我们知道餐馆的任何信息 ;我让厨师切葱花,出厨师却搅拌鸡蛋;我让厨师做一份清蒸鱼,厨师却让我唱首歌.........

System.out.println("**请让厨师给我切一点葱花。***");
System.out.println("cookName + "搅鸡蛋");
System.out.println("**请让厨师为我做一份清蒸鱼。***");
System.out.println("cookName + "你是我的小呀小苹果***");

如何防止其他人修改厨师的行为呢?就是将厨师打包成类。 

将厨师封装成Cook类,是想餐馆点菜的场景。

 

将厨师单独封装成一个类,将厨师定义成厨师类的行为,当我们想让厨师做菜,只能通过调用对象成员方法实现,而我们却不知道这个方法到底怎么写,所以无法随意修改。餐馆没有义务告诉我们厨师的任何信息,并且厨师也不会随意受我们差遣,所以说厨师的有些属性和行为不予以公开

我们将厨师的属性和部分方法用private来修饰。re

 此时再运行餐馆的主方法,就会抛出异常,提示Cook2的name和cutOnion()不可以直接调用。

日常生活中,顾客根本没有接触厨师的机会,所以厨师这个角色是对顾客来说是隐蔽的,被封装在餐馆的类当中。

将厨师对象封装在餐馆类中,顾客无法接触厨师的任何信息。

public class Restaurant { 
		  	 private Cook2 cook = new Cook2 (); //餐厅封装的厨师类
		   public static void takeOrder (String dish) { //下单
			cook.cooking(dish); //通知厨师做菜
		System.out.println("您的菜好了,请慢用。");		
	}
		   public String saySorry()  {//拒绝客户要求
			   return "抱歉,餐厅不提供此项服务。";
		   }
		   public static void main(String[] args) {
           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());//服务员给顾客善意的答复
	   }
   }

此例可得,作为顾客是始终和厨师没有交集的,只能是由服务员来传达,作为顾客不知道美食由那位厨师又或是字母烹饪出来的,这种编程模式就是封装。

封装的思想:将对象的属性和行为封装起来的载体就是类。类通常对客户隐藏其实现细节。

7.2 类的继承

继承在面向对象开发思想中是一个非常重要的概念,它使整个程序架构具有一定的弹性,在程序中复用已经定义完善的类不仅可以减少软件开发周期,还可以提高软件的可维护性和可拓展性。

举两个栗子:1 、平行四边形是特殊的四边形,可以说平行四边形继承了四边形类,这时平行四边形类将所有四边形具有的属性和方法都保留下来,并基于四边形类扩展了一些新的平行四边形类特有的属性和方法。

2、

eg:

Person类: 

class Person {
               private String name;
               private int age;
               public void setName(String name) {
                            this.name = name ;
               }
               public void setAge(int age) {
                            this.age = age;
               }
               public String getname()  {
                            return this .name;
               pu
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值