day07面向对象复习+课后练习

day07面向对象复习+课后练习

第一部分:面向对象上

两个要素:类和对象

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

创建Java自定义类

步骤:

  • 定义类(考虑修饰符、类名)
  • 编写类的属性(考虑修饰符、属性类型、属性名、初始化值)
  • 编写类的方法(考虑修饰符、返回值类型、方法名、形参等)

类的结构:属性和方法

类的成员之一:属性

### 变量的分类:成员变量与局部变量

类和对象的创建

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

对象的创建和使用:匿名对象

我们也可以不定义对象的句柄,而直接调用这个对象的方法。这样的对象叫做匿名对象。

使用情况

  • 如果对一个对象只需要进行一次方法调用,那么就可以使用匿名对象。
  • 我们经常将匿名对象作为实参传递给一个方法调用。

类的访问机制:

  • 在一个类中的访问机制:类中的方法可以直接访问类中的成员变量。 (例外:static方法访问非static,编译不通过。)
  • 在不同类中的访问机制:先创建要访问类的对象,再用对象访问类中 定义的成员

成员变量(属性)和局部变量的区别

对象的内存解析

  • 堆(Heap),此内存区域的唯一目的就是存放对象实例,几乎所有的对象 实例都在这里分配内存。这一点在Java虚拟机规范中的描述是:所有的
    对象实例以及数组都要在堆上分配。

  • 通常所说的栈(Stack),是指虚拟机栈。虚拟机栈用于存储局部变量等。

  • 局部变量表存放了编译期可知长度的各种基本数据类型(boolean、byte、char 、 short 、 int 、 float 、
    long 、double)、对象引用(reference类型,它不等同于对象本身,是对象在堆内存的首地址)。 方法执行完,自动释放。

  • 方法区(Method Area),用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据

方法举例与声明的格式

什么是方法(method、函数):

  • 方法是类或对象行为特征的抽象,用来完成某个功能操作。在某些语言中 也称为函数或过程。
  • 将功能封装为方法的目的是,可以实现代码重用,简化代码
  • Java里的方法不能独立存在,所有的方法必须定义在类里。

![](https://img-blog.csdnimg.cn/img_convert/a12b1715469f367bfe2621a21af9e4f1.png

方法的分类:按照是否有形参及返回值

方法使用中的注意点

  • 如果方法有返回值,则必须在方法声明时,指定返回值类型,同时方法中需要使用return关键字来返回指定类型的变量或者常量
  • 方法被调用一次,就会执行一次
  • 没有具体返回值的情况,返回值类型用关键字void表示,那么方法体中可 以不必使用return语句。如果使用,仅用来结束方法。
  • 定义方法时,方法的结果应该返回给调用者,交由调用者处理。
  • 方法中只能调用方法或属性,不可以在方法内部定义方法

课后练习 1:类的设计

定义Personpackage demo04;
public class Person {
   
    String name;
    int age;
    String  sex;
    
    public void study(){
   
        System.out.println("studying");
    }
    public void showAge(){
   
        System.out.println("age:"+age);
    }
    public int addAge(int  i){
   
        age+=i;
        return  age;
    }
}
定义测试类
package demo04;
/*要求:(1)创建Person类的对象,设置该对象的name、
age和sex属性,调用study方法,输出字符串
“studying”,调用showAge()方法显示age值,调用
addAge()方法给对象的age属性值增加2岁。
(2)创建第二个对象,执行上述操作,体会同一个类的
不同对象之间的关系
 */
public class PersonTest {
   
    public static void main(String[] args) {
   
        Person p1=new Person();
        p1.name="黄景瑜";
        p1.age=29;
        p1.sex="男";

        p1.study();
        p1.showAge(
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值