Java第六章面向对象

Java第六章面向对象

一、面对对象

​ Java语言是一种面向对象的语言。要使用Java进行面向对象的编程,首先要建立面向对象的思想。面向对象是一种直观而且程序结构简单的程序设计方法,它比较符合人类认识现实世界的思维方式。其基本思想是把问题看成是由若干个对象组成,这些对象之间是独立的,但又可以相互配合、连接和协调,从而共同完成整个重新要实现的任务和功能。

​ 面向对象的三大特性:封装、继续和多态。

二、开发方法

结构化开发:

​ ①面向功能划分软件结构

​ ②自顶向下

​ ③最小的子系统是方法

​ ④制约了软件的可维护性和可扩展性

面向对象开发 (面向对象程序设计 Object Oriented Programming OOP)

​ ①吧软件系统看成各种对象的集合

​ ②系统结构较稳定

​ ③子系统相对独立

​ ④软件可重用性、可维性和可扩展性强

三、对象的特征

1、属性

​ ①属性——对象具有的各种特征

​ ②每个对象的每个属性都拥有特定值

在这里插入图片描述

2、方法——对象执行的操作
在这里插入图片描述

对象是用来描述客观事物的一个实体

3、对象和类关系

​ ①类是抽象的概率,仅仅是模板

​ ②对象是一个你能够看得到、摸得着的具体实现

在这里插入图片描述

4、Java是面向对象的语言

①所有Java程序都以类class为组织单元

②关键字class定义自定义的数据类型

public class 类名{
    //定义属性(变量)
    //定义方法(操作)
}
四、如何创建和使用对象

1、创建对象

	类名     对象名   =   new 类名()
	School  center  =   new School;

2、引用对象成员:使用“.”进行以下操作

​ 引用类的属性: 对象名.属性

​ 引用类的方法:对象名。方法名()

center.name = "课工场";//给name属性赋值
center.showCenter();//调用showCenter()方法
五、方法的返回值

两种情况

​ ①如果方法具有返回值,方法中必须使用关键字return返回值,返回值类型为该值的类型

​ ②返回值只能一个

在这里插入图片描述

​ ③如果方法没有返回值,返回值类型为void

六、方法调用

​ 方法之间永许相互调用,不需要知道方法的具体实现,实现重用,提供效率。

情况举例
Student类的方法a()调用Student类的方法b()直接调用public void a( ){ b( );//调用b() }
Student类的方法a()调用Teacher类的方法b(),先创建类对象,然后使用“.”调用public void a( ){ Teacher t = new Teacher(); t.b( );//调用Teacher类的b() }
七、方法重载

​ 1、定义带参数的方法

<访问修饰符>返回类型 <方法名><形式参数列表>{
	//方法的主体	
}

​ 2、调用带参数的方法

对象名,方法名(参数1、参数2......参数n)

​ 3、构造方法

访问修饰符  构造方法名(){		 无返回值类型
	//初始化代码				 方法名与类名相同
}						    可以指定参数

​ 作用:对象初始化

​ 4、方法传参

​ 基本数据类型和引用数据类型在传参的区别

​ 基本数据类型

在这里插入图片描述

​ 引用数据类型

在这里插入图片描述

​ 基本数据类型,操作传递的是变量的值,改变一个变量的值不会影响另一个变量的值

​ 引用数据类型(类、数组和接口)赋值是把原对象的引用(可理解为内存地址)传递给另一个引用

​ 5、重载

​ 自定义构造方法

​ 方法名相同

​ 参数项不同

​ 与返回值、访问修饰符无关

​ 此时系统不再提供默认无参数构造方法

​ 6、this的用法

​ 调用属性

		this.health=100;
		this.name=“大黄”;

​ 调用方法

		this.print()

​ 调用构造方法

		this();
		this(“小黑”,100100,“雄”)

​ 7、成员变量和局部变量

​ 变量声明的位置决定变量作用域

​ 变量声明域确定可在程序中按变量名访问该变量的区域

​ 8、成员变量和局部变量区别

​ 作用域不同

​ 局部变量的作用域仅限于定义它的方法

​ 成员变量的作用域在整个类内部都是可见的

​ 初始值不同

​ Java会给成员变量一个初始值

​ Java不会给局部变量赋予初始值

​ 在一个方法中,不允许有同名局部变量

​ 在不同的方法中,可以有同名局部变量

​ 在同一类中,成员变量和局部变量同名时,局部变量具有更高优先权

八、封装

1、什么是封装

​ 面向对象三大特征之一——封装

​ 封装的概率

​ 将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问

​ 把尽可能多的东西藏起来,对外提供便携的接口

​ 封装的两大原则

​ 把所有的属性隐藏起来2

2、封装的好处

​ ①便于使用者正确使用系统,防止错误修改属性

​ ②有助于系统之间的松耦合,提高系统独立性

​ ③提高软件的可重用性

​ ④降低了构建大型系统的风险

3、为什么需要包

​ windows树形文件系统:

​ ①文档分门别类,易于查找和管理

​ ②使用目录解决文件同名冲突问题

​ 用MyEclipse创建包

​ JDK提供基本包:

​ java.lang:虚拟机自动引入

​ java.util: 提供一些实用类

​ java.io:输入、输出

​ 使用MyEclipse创建包的两种方法

​ 分别创建包和类

​ 创建类的过程中创建类所在的包

​ 如何导入包

​ 为了使用不在同一包中的类,需要在Java程序中使用import关键字代入这 个类

			  import 包名.类名;
			  import java.util.*;//导入java.util包中所有类
			  import cn.jtes.class.School;//导入指定包中指定类

​ 使用包中的注意事项

​ ①一个类同时引用了两个来自不同包的同类名

​ 必须通过完整类名来区分

​ ②每个包都是独立的,顶层包不会包含子包的类

​ ③package和import的顺序是固定的

​ package必须位于第一行(忽略注释行)

​ 只允许有一个package语句

​ 其次是import

​ 接着是类的声明

4、访问权限控制

​ 回顾

​ ①属性隐藏

​ ②包机制

​ 访问权限控制

​ ①类的访问控制

​ ②类成员的访问控制

5、类的访问修饰

作用域|修饰符同一个类中同一个包中子类中任何地方
Private可以不可以不可以不可以
默认修饰符可以可以不可以不可以
Protected可以可以可以不可以
Public可以可以可以可以

6、static修饰符

​ static可以用来修饰

​ ①成员变量

​ 静态变量,可以之间通过类名访问

​ ②成员方法

​ 静态方法,可以之间通过类名访问

​ ③代码块

​ 静态代码块,当Java虚拟机价值类时,就好执行该代码块

7、static变量

​ 类的成员变量

​ ①被static修饰的变量

​ ②在内存中只有一个拷贝

​ ③类内部,可在任何方法内直接访问静态变量

​ ④其他类中,可以直接通过类名访问

​ 实体变量

​ ①没有被static修饰的变量

​ ②每创建一个实例,就会为实例变量分配一次内存,实例变量可以在内存中有多 个拷贝,互不影响

​ 作用:

​ ①能被类所有实例共享,可作为实例之间进行交流的共享数据

​ ②如果类的所有实例都包含一个相同的常量属性,可把这个属性定义为静态常量类型,从而节省内存空间

8、static方法

​ 静态方法:可之间通过类名访问

​ ①静态方法中不能使用this和super

​ ②不能之间访问所属类的实例变量和实例方法

​ ③可之间访问类的静态变量和静态方法

​ 实例方法:通过实例访问

​ 可之间访问所属类的静态变量、静态方法、实例变量和实例方法

​ 静态方法必须被实现 : main()就是最常用的静态方法

九、继承

1、使用继承

​ 编写父类

[访问修饰符]class Pat{
	//公共的属性和方法
}

​ 编写子类,继承父类

[访问修饰符]class Dog extends Pet{
	//子类特有的属性和方法
}

继承是Java中实现代码重用的重要手段之一。Java中只支持单根继承,即一个类只能有一个直接父类

2、子类访问父类成员

​ 访问父类构造方法、

super();
super(name);

​ 访问父类属性

super.name;

​ 访问父类方法

super.print();

①使用super关键字,super代表父类对象

②在子类构造方法中调用且必须是第一句

③不可以访问父类中定义为private的属性和方法

3、super关键字来访问父类的成员

​ ①super只能出现在子类的方法和构造方法中

​ ②super调用构造方法时,只能是第一句

​ ③super不能访问父类的private成员

4、继承条件下的构造方法

​ 继承条件下构造方法的调用规则

​ ①子类构造方法没有通过super显式调用父类的有参构造方法,也没通过this显式调用自身其他构造方法

​ 系统默认调用父类的无参构造方法

​ ②子类构造方法通过super显式调用父类的有参构造方法

​ 执行父类相应构造方法,而不执行父类无参构造方法

​ ③子类构造方法通过this显式调用自身的其他构造方法,在相应构造方法中应用以上两条规则

5、子类可以继承父类的所有资源吗?

​ 不能被继承的父类成员:

​ ①private成员,②子类与父类不在同胞,使用默认访问权限的成员,③构造方法

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值