《Java程序设计基础》 第6章手记

本章主要内容: - 类的定义 - 成员变量和成员方法 - 类及成员的修饰符 - 对象的创建与使用 - 成员变量的访问与方法的调用 - 参数的传递 - 匿名对象

具体的概念在原书上,老师讲到的时候你应该在书上用笔画出来作为强调,这里只贴一些总结性的概念,请仔细查阅原书和ppt,记住它们。最后贴实验答案。

是一种抽象的概念;对象则是实际存在的属于该类的具体的个体。

对象是面向对象技术的核心,是构成系统的基本单元,所有面向对象的程序都是由对象组成。

是对象之上的抽象,它为属于该类的全部对象提供了统一的描述。类是一种抽象的数据类型,是对象的模板;对象则是类的实例化,是类的实例。

一般说来,是由数据成员函数成员封装而成的,其中数据成员表示类的属性,函数成员表示类的行为。从大的方面来看,你可以把看做是一种高级的数据类型,这种数据类型由属性行为组成。属性用来描述这个类的特征,行为描述这个类所具有的功能。

比如:

class People   //这是一个描述人的类
{
    int age,weight,height;   //这个类有4个变量(可以更多,这里做示例)
    String name;    //这四个变量描述了人的特征,名字、年龄、身高、体重

    void speak{     //人会说话,人具有这个行为
        System.out.print("Hello!");     //这里用打印来表征说话,人会说Hello
    }
}

定义类(类的一般结构、成员变量、成员方法)参见原书。

对象的创建与使用:

People person  = new People();  //我们用这个类创建了一个对象person,它具有People的全部特征
//请注意,创建对象必须遵循这个格式,就像你说英语“你好”必须说Hello而不是hallo,语法即约定的交流规则,你只有遵循语法,编译器或者解释器才能理解你到底在说什么。

对象名对象成员之间用”.“相连,这个点是引用的一种形式,你可以把小圆点看做是一个运算符,这个运算符执行的是从一个从一个对象中找到它的组成这个对象的某个成员。 例:person.name;表示从person这个对象中找到组成person的name变量。

在类定义内调用方法:

常规调用不在赘述,重点介绍this关键字。

this关键字强调调用的方法就在这个类中,即告诉编译器,我让你调用的功能就在这里,你不需要再去别的文件中找了。

格式:this.成员名

参数传递类似于C语言,但是没有指针,属于传什么类型就声明什么类型。

匿名对象: 使用条件 ①只需要一次调用, ②只是作为实参传递给一个方法,用完即止。

格式: new People().speak 即跳过了给对象起名字的步骤直接调用了People里的speak方法。

实验6-1\6-2\6-3原代码:

/*三次实验的代码写到一个文件中,这个文件可以实现三个实验的所有要求,你也可以把里面的两个类放在两个文件中*/

import java.util.*;     //声明用到的类库,放在两个文件中时,该声明应该跟在Test前,想一想原因?
class Student
{
    String name;
    int age;
    double i,j,k;     //i,j,k表示三科成绩,这里偷了懒,推荐chinese、math、english

    double total(){
        return i+j+k;
    }
    double average(){
        return (i+j+k)/3;
    }
}
public class Test
{
    public static void main(String[] args)
    {
        Scanner reader = new Scanner(System.in);
        Student s1 = new Student();
        Student s2 = new Student();

        System.out.println("输入学生名:");
        s1.name = reader.nextLine();
        System.out.println("年龄:");
        s1.age = reader.nextInt();
        System.out.println("各科成绩:");
        s1.i = reader.nextDouble();
        s1.j = reader.nextDouble();
        s1.k = reader.nextDouble();

        s2.name = "Steve";
        s2.age = 19;
        s2.i = 96.0;
        s2.j = 93.1;
        s2.k = 92.0;

        System.out.println("学生名:" +s1.name);
        System.out.println("总成绩:" +s1.total());
        System.out.println("平均成绩:" +s1.average());

        System.out.println("学生名:" +s2.name);
        System.out.println("总成绩:" +s2.total());
        System.out.println("平均成绩:" +s2.average());
    }
}

常见问题: 1.Scanner reader = new Scanner(System.in);忘记System.in。 2.Student s1 = new Student();忘记括号。 3.System.out.println(“平均成绩:” +s1.average());忘记average后面的括号。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏小詹同学

LeetCode 系列——双指针问题 。

关于 LeetCode 系列有段时间没有逐题更新了 ,还是想到一题一题的刷有些凌乱 。如前段时间的推文所说 ,准备系统的讲讲数据结构相关知识点 。

1932
来自专栏LinkedBear的个人空间

唠唠SE的面向对象-01——对象 原

每个对象都有自己独特的状态标识和行为对象的属性(attribute),或者状态(state)。

732
来自专栏后端技术探索

视觉直观感受 7 种常用的排序算法

快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序 n 个项目要Ο(n log n)次比较。在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见。...

952
来自专栏木子昭的博客

正则 (入门篇)简单来说写好正则表达式的两个要点:写在最后

如果你对正则感兴趣,读完这篇文章,一定会有收获~_^ 简单来说 正则一般代指正则表达式 正则表达式是从"复杂数据"中抽取"有用数据"的公式 ---- 写好正则...

3068
来自专栏互联网杂技

排序算法性能比较

所谓排序,即将原来无序的一个序列重新排列成有序的序列。 排序方法中涉及到稳定性,所谓稳定性,是指待排序的序列中有两个或两个以上相同的项,在排序前和排序后看这些相...

3727
来自专栏恰童鞋骚年

剑指Offer面试题:16.合并两个排序的链表

PS:这也是一道出镜率极高的面试题,我相信很多童鞋都会很眼熟,就像于千万人之中遇见不期而遇的人,没有别的话可说,唯有轻轻地问一声:“哦,原来你也在这里? ”

581
来自专栏人工智能LeadAI

为什么算法容易忘记之插入排序

在学习常用的排序算法时,常有这样的感觉,一看就懂,过眼就忘。原因在于没有将排序的基本思想与代码中各个循环控制变量的意义联系起来进行理解记忆。 插入排序 首先,我...

3545
来自专栏python学习之旅

算法笔记(六):计数排序和基数排序

        这里我是按自己的理解去实现的,时间复杂度和空间复杂度和算法导论上的可能不一样,感兴趣的话参考下就行,感觉最重要的还是算法思想。根据算法性能去实现...

2102
来自专栏CDA数据分析师

Python面试中8个必考问题

1、下面这段代码的输出结果是什么?请解释。 ? 怎样修改extendList的定义能够产生以下预期的行为? 上面代码输出结果将是: ? 很多人都会误认为list...

20010
来自专栏编程

八大排序算法总结与java实现

概述 因为健忘,加上对各种排序算法理解不深刻,过段时间面对排序就蒙了。所以决定对我们常见的这几种排序算法进行统一总结。首先罗列一下常见的十大排序算法: ? 请点...

28310

扫码关注云+社区

领取腾讯云代金券