《Java程序设计基础》 第7章手记
来源:互联网 发布:淘宝导购怎么做 编辑:程序博客网 时间:2024/06/05 15:01
本章主要内容
- 类的私有成员与公共成员
- 方法的重载
- 构造方法
- 类的静态成员
- 对象的应用
本节课知识性内容很多,这里贴了核心内容,如果你看不懂,请在原书上查看具体的例子。最后会贴实验答案。
类的私有成员与公共成员
如果在类的成员声明加上修饰符private,则就无法从类的外部访问该类内部的成员,而只能被类自身访问和修改,而不能被任何类或者该类的子类来获取或引用。
如果在类的成员声明前加上修饰符public,则表示该成员可以被所有其他的类访问。由于public修饰符会造成封装性和安全性的下降,所以建议少用。
如果类的成员声明前缺省修饰符,则介于两者之间,表示该成员只能被同一个包中的类所访问和调用。
方法的重载
方法的重载是实现“多态”的一种方法。
方法的重载是指在同一个类内具有相同名称的多个方法,这多个方法如果参数个数不同,或者参数个数相同,但类型不同,则这些同名的方法具有不同的功能。
C#是通过虚方法来实现多态的,具体可以参考之前的博客《C#多态》。
构造方法
构造方法是一种特殊的方法,它是在对象被创建时初始化对象的成员的方法。
它的特殊性体现在:
1. 构造方法的方法名必须和类名相同
2. 构造方法没有返回值,但不能加void
3. 构造方法的作用主要是完成对类对象的初始化工作
4. 构造方法一般不能由编程人员显式地调用,而是用new来调用
5. 在创建一个类的对象的同时,系统会自动调用该类的构造方法为对象初始化。
如果没有定义构造方法,Java编译器会自动生成一个构造方法: 类名() { }
,即什么都不做的空语句。
构造方法的重载和普通方法的重载是一样的,从一个构造方法中调用另一个构造方法可以使用this语句:this(参数表);
构造方法区分public和private,因为其是类的成员,所有跟上文讲得类成员的私有和共有是一样性质的。
类的静态成员
类的成员(变量或者方法)前如果加了static,表示该成员是静态成员,否则是实例成员。
静态变量,又称类变量,隶属于类而不是类的某个具体成员。静态变量是一个公共的存储单元,任何一个类的对象访问它时,都是同一个值,这一点类似于C语言的static变量。
静态变量既可以使用类来调用,也可以使用对象来调用。
静态方法
- 非static的方法是属于某个对象的方法,在这个对象创建时,对象的方法有属于自己专用的代码段,而static方法是属于整个类的,它在内存中的代码将被所有的对象所共用,而不能被任何一个对象共用。
- 由于静态方法是属于整个类的,所以它不能操纵和处理属于某个对象的成员,而只能处理整个类的成员,即static方法只能访问static成员变量或调用static成员方法。或者说,在静态方法中不能访问实例变量和实例方法。
- 在静态方法中不能使用this和super。因为this是代表调用该方法的对象,但现在“静态方法”既然不需要对象来调用,this也自然不应存在于“静态方法”内部,关于super关键字的用法将在第八章讨论。
- 调用静态方法时,可以使用类名直接调用,也可以用某一个具体的对象来调用。
静态初始化器 略
对象的应用
对象是一种引用型的变量,是“类类型的值”。引用型变量实际上保存对象在内存中的地址,所有对象名可以进行赋值和比较操作,这一点类似于C语言的指针。
需要注意的是,new一个对象是在内存中申请新的空间并返回申请到的地址,而对象的赋值是将引用变量指向内存中的同一个地址。
对象的数组即以对象为组成元素的数组,与其他数组操作相同。
实验代码
实验6_1//filename: Student.javaclass Student{ int age; String name; public Student(int a, String n) { age = a; name = n; } public Student() { this(20, "简静文"); } public Student(int a) { this(a, "贾樟柯"); }}//filename: Shiyan6_1public class Shiyan6_1{ public static void main(String[] args) { Student s1 = new Student(); Student s2 = new Student(13); Student s3 = new Student(12, "江文涛"); System.out.println(s1.name +" " +s1.age); System.out.println(s2.name +" " +s2.age); System.out.println(s3.name +" " +s3.age); }}
实验6_2//filename: Myplus.javaclass Myplus{ public int plus(int a,int b) { return a + b; } public int plus(int a, int b, int c) { return a + b + c; } public int plus(int a, int b,int c,int d) { return a + b + c + d; }}//filename: Shiyan6_2class Shiyan6_2{ public static void main(String[] args) { Myplus p1 = new Myplus(); System.out.println(p1.plus(1, 2)); System.out.println(p1.plus(1, 2, 3)); System.out.println(p1.plus(1, 2, 3, 4)); }}
知乎: Solo | weibo@从流域到海域
- 《Java程序设计基础》 第7章手记
- 《Java程序设计基础》 第2章手记
- 《Java程序设计基础》 第3章手记
- 《Java程序设计基础》 第4章手记
- 《Java程序设计基础》 第5章手记
- 《Java程序设计基础》 第6章手记
- 《Java程序设计基础》 第8章手记Part 1
- 《Java程序设计基础》 第8章手记Part 2
- Java程序设计基础-第7章
- 第1章 程序设计基础
- MOOC清华《程序设计基础》第7章:读文件操作
- MOOC清华《程序设计基础》第7章:统计活跃用户数
- 第2章 C# 3.0程序设计基础
- 第3章 Android程序设计基础
- 第2章 C#程序设计基础
- 第2章 C#程序设计基础
- 实战java高并发程序设计第之java并发基础
- Java程序设计基础-第三章
- 【dotnet跨平台】最新版dotnet-cli下的ASP.NET Core和asp.net mvc【RC2尝鲜】
- gulp的安装教程,使用教程,和简单的自动化任务教程
- 子线性布局中使两个控件在同一排显示的方法
- HDU 1097 A hard puzzle
- 编程题:将一句话里的单词进行倒置
- 《Java程序设计基础》 第7章手记
- [LeetCode 7] Reverse Integer
- 四大编辑器 -- Sublime, Atom, VS Code和Notepad++
- Java十进制转二进制,递归算法
- 关于sublime text3 的package control
- ARP与RARP详细解析
- UVa 1673 str2int
- UTF-8编码数据在命令行终端编织成表格并输出
- Android Studio 1.5.1 JNI 编程