Java类和对象----类与对象的初步认识

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

学习面向对象内容的三条主线:

  • 1.java类及类的成员:属性、方法、构造器;代码块、内部类
  • 2.面向对象的三大特征:封装性、继承性、多态性、(抽象性)

  • 3.其他关键字:this、super、static、final、abstract、interface、package、import

一、面向过程和面向对象

  • 二者都是一种思想,面向对象是相对于面向过程而言的。面向过程,强调的是功能行为,以函数为最小单位,考虑怎么做。面向对象,将功能封装进对象,强调具备了功能的对象,以类/对象为最小单位,考虑谁来做。
  • 面向对象更加强调运用人类在日常的思维逻辑中采用的思想方法与原则,如抽象、分类、继承、聚合、多态等。

1.面向对象的三大特征:

  • 封装 (Encapsulation)
  • 继承 (Inheritance)
  • 多态 (Polymorphism)

2.面向对象分析方法分析问题的思路和步骤:

  • 根据问题需要,选择问题所针对的现实世界中的实体。
  • 从实体中寻找解决问题相关的属性和功能,这些属性和功能就形成了概念世界中的类。
  • 把抽象的实体用计算机语言进行描述,形成计算机世界中类的定义。即借助某种程序语言,把类构造成计算机能够识别和处理的数据结构。
  • 将类实例化成计算机世界中的对象。对象是计算机世界中解决问题的最终工具。

3.面向对象的思想概述

在这里插入图片描述

  • 可以理解为:类 = 抽象概念的人;对象 = 实实在在的某个人
  • 面向对象程序设计的重点是类的设计
  • 类的设计,其实就是类的成员的设计

二、Java语言的基本元素

  • 类(Class):类是对一类事物的描述,是抽象的、概念上的定义
  • 对象(Object):对象是实际存在的该类事物的每个个体,因而也称为实例(instance)。
  • java类的实例化,即创建类的对象

1.类

类的成员:属性、方法、构造器;代码块、内部类

//创建类
class <class_name>{
    field;//成员方法
    method;//成员方法
}

//实例化对象
<class_name>.<对象名> = new <class_name>;

class为定义类的关键字,class_name为类的名字,{}中为类的主体。
类中的元素称为:成员属性;类中的方法称为:成员方法。

  • 属性 = 成员变量 = field = 域、字段 = 实例变量
  • 方法 = 成员方法 = 函数 = method
  • 建类的对象 = 类创的实例化 = 实例化类
1.1 字段、属性、成员变量
1.语法规则:
  • 语法格式:
    修饰符 数据类型 属性名 = 初始化值 ;
  • 说明1: 修饰符
    常用的权限修饰符有:private、缺省、protected、public、static、final
  • 说明2:数据类型
    任何基本数据类型(如int、Boolean) 或任何引用数据类型
  • 说明3:属性名
    属于标识符,符合命名规则和规范即可
  • 举例:
class Person { 
    public String name; //声明public变量 name
    private int age;//声明private变量 age
}
2.变量的分类:成员变量和局部变量
  • 在方法体外,类体内声明的变量称为成员变量。
  • 在方法体内部声明的变量称为局部变量。
    在这里插入图片描述
  • 注意:二者在初始化值方面的异同(见下图):
    • 同:都有生命周期
    • 异:局部变量除形参外,均需显式初始化

在这里插入图片描述

3.成员变量和局部变量的内存位置

示例:

class Person{//人类 
    //1.属性 
    String name;//姓名 
    int age = 1;//年龄 
    boolean isMale;//是否是男性
    public void show(String nation){ //nation:局部变量
        String color;//color:局部变量 
        color = "yellow";
    }
}
//测试类 
class PersonTest{
    public static void main(String[] args){
        Person p = new Person();
        p.show(“USA”);
    }
}

在这里插入图片描述

4.对象属性的默认初始化值
   当一个对象被创建时,会对其中各种类型的成员变量自动进行初始化赋值。除了 基本数据类型之外的变量类型都是引用类型,如上面的Person及前面讲过的数组。
成员变量类型初始值
byte0
short0
int0
long0
float0.0F
double0.0
char0或写为:’\u0000’(表现为空)
booleanfalse
引用类型null
5.认识null

null 在 Java 中为 “空引用”, 表示不引用任何对象. 类似于 C 语言中的空指针. 如果对 null 进行 . 操作就会引发异常.

class Person { 
    public String name; 
    public int age;
}
class Test { 
    public static void main(String[] args) { 
        Person person = new Person();  
        System.out.println(person.name.length());//获取字符串长度
    } 
}

// 执行结果
 Exception in thread "main"java.lang.NullPointerException
at Test.main(Test.java:9)
1.2 方法 (method)
1.举例
public void eat(){}
public void sleep(int hour){}
public String getName(){}
public String getNation(String nation){}
2.方法的声明格式:
   权限修饰符 返回值类型 方法名(形参列表){
             方法体代码程序
             return  返回值;
    }
3.说明
3.1 权限修饰符,
  • 默认方法的权限修饰符都使用public
  • java规定的4种权限修饰符:private、public、缺省、protected
3.2 返回值类型
3.2.1.有返回值 vs 无返回值
   1.如果方法有返回值,则必须在方法声明时,指定返回值的类型。同时,方法中,需要使用return关键字来返回指定类型的变量或常量。“return  数据” 
   2.如果没有返回值,则方法声明时,使用void来表示。通常没有返回值的方法中,就不需要使用return,但是,如果使用的话,只能用“return;”表示结束此方法的意思
3.2.2.定义方法该不该有返回值?
   1.看题目要求
   2.凭经验,具体问题具体分析
3.3 方法名
  • 属于标识符,遵循标识符的规则和规范,做到“见名知意“
3.4 形参列表
  1. 个数:方法可以声明0个,1个,或多个形参
  2. 格式:数据类型1 形参1;数据类型2 形参2 …
  3. 我们定义方法时,该不该不定义形参?
    • 看题目要求
    • 凭经验,具体问题具体分析
3.5 方法体:方法功能的体现
4.return关键字的的使用:
  • 1.适用范围:使用在方法体中
  • 2.作用:针对有返回值类型的方法,使用"return 数据"方法返回所要的数据
  • 3.注意点:return关键字后面不能声明执行语句
5.方法的调用
  • 调用:方法通过方法名被调用,且只有被调用才会执行。
  • 方法调用的过程分析
    在这里插入图片描述
  • 注意
    • 方法被调用一次,就会执行一次
    • 定义方法时,方法的结果应该返回给调用者,交由调用者处理。
    • 方法中只能调用方法或属性,不可以在方法内部定义方法。
    • 特殊的:方法A中又调用了方法A:递归方法

2.对象

2.1对象的创建
  • 创建对象语法:类名对象名 = new 类名();
  • 使用“对象名.对象成员”的方式访问对象成员(包括属性和方法)

举例:

public class Animal {
    public int legs; 
    public void eat(){ 
        System.out.println(“Eating.);
    }
    public viod move(){ 
        System.out.println(“Move.);
   }
}
public class Zoo{ 
    public static void main(String args[]){ 
        Animal xb=new Animal();  //创建对象 
        xb.legs=4;//访问属性 
        System.out.println(xb.legs); 
        xb.eat();//访问方法
        xb.move();//访问方法
    }
}

采用尚硅谷课件的图片

  • 说明: 如果创建了一个类的 多个对象,对于类中 定义的属性,每个对 象都拥有各自的一套 副本,且互不干扰。
  • 类的访问机制:
    • 在一个类中的访问机制:类中的方法可以直接访问类中的成员变量。(例外:static方法访问非static,编译不通过。)
    • 在不同类中的访问机制:先创建要访问类的对象,再用对象访问类中 定义的成员。
2.2对象的使用

Person p1 = new Person();执行完后的内存状态。其中类定义如下:

class Person{ 
    int age; 
    void shout(){ 
        System.out.println(“oh,my god! I am ” + age);
    }
}

在这里插入图片描述
Person对象使用执行完后的内存状态。其中类定义如下:

class PersonTest{ 
    public static void main(String[] args) { 
       //程序运行的内存布局如下图 
       Person p1 = new Person(); 
       Person p2 =new Person(); 
       p1.age = -30; 
       p1.shout(); 
       p2.shout();
    }
}

在这里插入图片描述

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值