第五节 类和对象

面向对象怎么理解?

1.1 面向对象是相对面向过程而言

1.2 面向对象和面向过程都是一种思想

1.3 面向过程:强调的是功能行为

1.4 面向对象:将功能封装进对象,强调具备了功能的对象

1.5 面向对象是基于面向过程的

特点:

三个特征:封装、继承、多态

我们在开发过程中,就是在找对象进行使用,没有对象就new一个对象。

找对象:建立对象,使用对象,维护对象的关系

封装:

(1)是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。

(2)好处:将变化隔离;便于使用;提供重用性;提高安全性

(3)封装元素:将不需要对外提供的内容都隐藏起来;把属性都隐藏,提供公共方法对其访问。注意:私有仅仅是封装的一种表现形式。 致所有对外提供访问方式,就因为可以在访问方式中加入逻辑判断语句,对访问的数据进行操作,提高代码的健壮性。

3、类和对象的关系

类:对现实生活中事物的描述。描述对象用java的里的形式就用类的方式呈现,通过类来描述对象的行为和状态。
对象:就是这类事物中,真是存在的个体。它是类的实例,它有状态和行为。通过new操作符所产生的实体。
例如:一个人是一个对象,他有名字、性别、年龄、身份证、吃饭等属性和状态。

例如:public class Person(){    //类 String name;             //个体   有状态和行为属性,是通过new操作符所产生的实体。
个体 char sex; int age; String idcard; public void eat(){ } }

4、类中包含的变量

局部变量:

局部变量作用于函数(方法)中,或者是语句中。
在方法、构造方法或者语句块中定义的变量被称为局部变量。
变量声明和初始化都是在方法中,方法结束后,变量就会自动销毁。

成员变量:

成员变量作用于整个类中。
成员变量是定义在类中,方法体之外的变量。
这种变量在创建对象的时候实例化。
成员变量可以被类中方法、构造方法和特定类的语句块访问。例子:
 1 package demo;
 2
 3 public class VariableDemo {
 4     String name = "成员变量";
 5
 6     public static void main(String[] args) {
 7         new VariableDemo().show();
 8     }
 9
10     public void show() {
11         String name = "局部变量";
12         System.out.println(name);
13     }
14 }


5、匿名对象

new Person();
当对对象的方法只调用一次时,可以用匿名对象来完成,这样比较简化。
如果对一个对象进行多个成员调用,必须给这个对象起个名字。
可以将匿名对象作为世纪参数进行传递。

6、private

权限修饰符,表示私有的;用于修饰类中的成员(成员变量,成员函数)。私有的表示只能在本类中有效。
将属性私有化以后,类以外即使建立了对象也不能直接访问,但是如果我们要访问里面的属性值,就需要在对象中提供对应的访问属性的方式。

当创建一个类并声明类的成员变量时,为了保护类不被外部直接访问,你就应该使用private修饰符来对类中的属性进行封装(添加get和set方法),这样外部类就无法直接访问此类的对象,只能通过类的get和set方法来访问对象的属性。

8、构造函数

8.1 函数名与类名相同
8.2 不用定义返回值类型
8.3 不可以写ruturn
8.4 对象一建立就会调用与之对应的构造函数
8.5 如果这个类当中没有构造函数,那么系统会给该类加入一个空的构造函数。
8.6 当类中定义了构造函数后,默认的构造函数就没有了。

使用构造器时需要记住:

1.构造函数必须与类同名(如果一个源文件中有多个类,那么构造器必须与公共类同名)

2.每个类可以有一个以上的构造函数

3.构造函数可以有0个、1个或1个以上的参数

4.构造函数没有返回值

5.构造函数总是伴随着new操作一起调用

示例:

示例:

A.java

Java代码

  1. public class A{
  2. public A(){
  3. System.out.println("调用了无参的构造函数");
  4. }
  5. public A(String mess){
  6. System.out.println("调用了有参的构造函数\n"+
  7. "参数内容为:"+mess);
  8. }
  9. }

Test.java

Java代码

  1. public class Test{
  2. public static void main(String [] args){
  3. A a_1=new A();//调用无参的构造函数
  4. A a_2=new A("Hello");//调用有参的构造函数
  5. }
  6. }

输出结果:

调用了无参的构造函数

调用了有参的构造函数

参数内容为:Hello

 

作用:

给对象初始化

注意:

默认构造函数的特点。
多个构造函数是以重载的方式存在的。

构造函数和一般函数的不同

构造函数是在对应一建立就运行,给对象初始化。
一般函数是对象调用才知性,给对象添加功能。
一个对象的建立,构造函数只运行一次,而一般方法可以被对像调用多次。

什么时候定义构造函数呢?

在分析事物时,该事物存在具备一些特性或者行为,那么将这些内容定义在构造函数中。 

9、构造代码块

 作用:给对象进行初始化。
 对象一建立就运行,而且优先于构造函数之行。
 和构造函数的区别:构造代码块是给所有对象进行统一初始化。而构造函数是给对应的对象进行初始化。

10、关键字

this

this 看上去是用于区分局部变量和成员变量同名的情况。
特点:this代表的是本类的对象;代表所在函数所属对象的引用-->哪个对象在调用this所在函数,this就代表哪个对象。

this的应用:

当定义类中功能时,该函数内部要用到调用该函数的对象时,这时我们来表示这个对应。我们在本类功能内部中使用本类对象,我们用this。

this语句在构造函数间调用

this()语句只能定义在构造函数的第一行,因为在初始化要先执行。

Static

静态的,是一个修饰符,是修饰成员(成员变量,成员函数)的。静态所修饰的内容,被对像所共享。
当成员被静态修饰后,我们就多了一个调用方式。直接使用类名.静态成员。

    我们在直接使用类名.属性或者方法的时候,必须是static静态的。因为只有先有这个属性或者方法我们才能被使用。

特点:

随着类的加载而加载;生命周期很长。
优先于对像存在;静态是先存在的,对象是后存在的。
被所有对象所共享;
可以直接被类名所调用;

注意事项:

(1)、静态方法只能访问静态成员。非静态方法既可以访问静态也可以访问非静态。
(2)、静态方法中,不可以定义this、super关键字,因为静态优先于对像存在,所以静态方法中不可以出现this。
好处:对对象的共享数据进行单独空间的存储,节省空间,没有必要每一个对象中都存储一份;可以直接被类名调用。
不好:生命周期过长;访问出现局限性。


时间: 2024-10-08 23:13:52

第五节 类和对象的相关文章

JavaSE学习笔记(五)——类与对象

一.  类和对象 1.1           面向对象与面向过程的区别 1.面向过程 采用面向过程必须了解整个过程,每个步骤都有因果关系,每个因果关系都构成了一个步骤,多个步骤就构成了一个系统,因为存在因果关系每个步骤很难分离,非常紧密,耦合度高,当任何一步骤出现问题,将会影响到所有的系统.如:采用面向过程生产电脑,那么他不会分CPU.主板和硬盘,它会按照电脑的工作流程一次成型. 2.面向对象 面向对象对会将现实世界分割成不同的单元(对象),实现各个对象,如果完成某个功能,只需要将各个对象协作起

第4节 类和对象

一.Java 对象和类 面向对象语言三大特性:封装.继承.多态: 对象:描述客观事物的一个实体: 类:类是封装对象的属性和方法的载体,反过来说具有相同属性和行为的一类实体被称为类:类行为:方法:属性:成员变量 定义类:[访问修饰符] class 类名{   //class是声明类的关键字,类名首字母大写 //代码} java中权限修饰符 访问位置 private protected public 本类 √ √ √ 同包或其他子类 × √ √ 其他包的类或子类 × × √ 定义属性:  [访问修饰

JAVA学习第五天 - 类与对象

一.面向对象程序设计的基本概念 1,对象: 特征分为静态特征和动态特征.静态特征指对象的外观.性质.属性等,动态特征指对象具有的功能.行为等.客观事物是错中复杂的,但是人们总是从某一目的出发,运用抽象分析的能力,从总舵的特征中抽取最具代表性.最能反映对象本质的若干特征加以详细研究. 人们讲将对象的静态特征抽象为属性,用数据来描述,在Java语言中成为变量:人们将对象的动态特征抽象为行为,用一组代码表示,完成对数据的操作,在Java语言中成为方法.一个对象由一组属性和一组对属性进行操作的方法构成.

Java(五、类和对象中的例题)

一.方法中的参数为数值型的(int) import java.util.Scanner; public class ScoreCalc { public void calc(int num1,int num2,int num3){ int sum = num1 + num2 +num3; double avg = sum / 3; System.out.println("总成绩:"+sum); System.out.println("平均分:"+avg); } pu

sdut 面向对象程序设计上机练习五(简单类和对象)

面向对象程序设计上机练习五(类和对象) Time Limit: 1000MS Memory limit: 65536K 题目描述 定义类Time,Time有3个公用的数据成员hour.min.sec分别表示小时.分.秒. 在主函数main中定义Time类对象t1,在主函数main中输入t1的各数据成员再并输出各数据成员. 输入 输入类对象的3个数据成员hour.min.sec. 输出 输出类对象的3个数据成员hour.min.sec. 示例输入 9 10 11 示例输出 9:10:11 #inc

java总结第三次//类和对象2、3

四.类和对象2 主要内容:Java类的继承.方法的重写.覆盖.访问控制.super 关键字.多态性及其应用 1.继承 要求:Java只支持单继承,不允许多重继承 一个子类只能有一个父类 一个父类可以派生出多个子类 子类继承了父类,就继承了父类的方法和属性. 在子类中,可以使用父类中定义的方法和属性,也可以创建新的数据和方法. 因而,子类通常比父类的功能更多. 在Java 中,继承的关键字用的是“extends”,即子类是对父类的“扩展”. 注意:子类不能继承父类中私有的(private)成员变量

c++第五章-(类与对象、构造器和析构器)

1.构造器与结构体的区别:构造器多支持方法.其作用有申请内存,初始化变量. 在c++中构造器没有返回值:语法Class Name(); 2.析构器的作用:释放内存. 在c++中析构器没有返回值:语法~ClassName(); class Animal { public: std::string mouth; std::string name; void eat(); void sleep(); void drool(); Animal(std::string theName); }; class

构建一个学生Student,根据类Student的定义,创建五个该类的对象,输出每个学生的信息,计算并输出这五个学生Java语言成绩的平均值,以及计算并输出他们Java语言成绩的最大值和最小值。

定义一个表示学生信息的类Student,要求如下: (1)类Student的成员变量: sNO 表示学号: sName表示姓名: sSex表示性别: sAge表示年龄: sJava:表示Java课程成绩. (2)类Student带参数的构造方法: 在构造方法中通过形参完成对成员变量的赋值操作. (3)类Student的方法成员: getNo():获得学号: getName():获得姓名: getSex():获得性别: getAge()获得年龄: getJava():获得Java 课程成绩 根据类

谈谈Delphi中的类和对象:五、类是一种对数据和操作高度的封装机制;六、类是一种代码重用机制

五.类是一种对数据和操作高度的封装机制 1)数据封装 unit Unit2; interface type TEmployee = class; private FName: String; public Constructor Create; function GetName: String; procedure SetName(AName: String); end; implementation constructor TEmployee.Create; begin FName:= 'Xu