第四讲 类与对象
- 类和对象的区别的联系
- 类是抽象的、概念的,代表一类事物,比如人类、动物类...
- 对象是具体的、实际的存在,代表一个具体的食物
- 类是对象的模板,对象是类的一个实例,用类来实例化对象,例如通过人来来创建小麦这个具体的人。
- 如何定义类?
- 如何创建对象?——两种方法
- 第一种
- 对象声明:类名 对象名
- 对象创建:对象名 = new 类名()
- 第二种:一步到位
- 类名 对象名 = new 类名();
- 第一种
类名首字母大写;- 类的成员方法(成员函数)定义
![Image(15)_thumb[1] Image(15)_thumb[1]](//images0.cnblogs.com/blog/412980/201303/24204421-dea49f65da9b49e0b73bb12cd07375d1.png)
程序如下:
1: /*
2: *通过打印 金字塔 练习 没有返回值的成员方法
3: */
4: package lesson4;5: public class _3PrintJinZiTa {
6: /**
7: * @param args
8: */
9: public static void main(String[] args) {
10: // TODO Auto-generated method stub
11: PrintJinZiTa myPrintJinZiTa=new PrintJinZiTa(9);
12: myPrintJinZiTa.printHalf();13: myPrintJinZiTa.print();14: }15: }16: //打印金字塔类
17: class PrintJinZiTa{
18: //定义 打印 层数
19: private int n=0;
20: public PrintJinZiTa(int n){
21: this.n=n;
22: }23: //打印金字塔的右一半
24: public void printHalf(){
25: for(int i=0;i<n;i++){
26: for(int j=0;j<i+1;j++){
27: System.out.print("*");
28: }29: System.out.println();
30: }31: }32: //打印金字塔
33: public void print(){
34: int half_n=(this.n*2-1)/2;
35: for(int i=0;i<n;i++){
36: for(int l=0;l<half_n-i;l++){
37: System.out.print(" ");
38: }39: for(int k=0;k<i;k++){
40: System.out.print("*");
41: }42: for(int j=0;j<i+1;j++){
43: System.out.print("*");
44: }45: System.out.println();
46: }47: }48: }
1: 程序如下:2: /*
3: * 功能:通过打印数学的九九乘法表,练习 类的成员方法
4: */
5: package lesson4;6: public class _4ChengFaBiao {
7: /**
8: * @param args
9: */
10: public static void main(String[] args) {
11: // TODO Auto-generated method stub
12: ChengFaBiao chengFaBiao=new ChengFaBiao(9);
13: }14: }15: class ChengFaBiao{
16: public ChengFaBiao(int n){
17: for(int i=1;i<=n;i++){
18: for(int j=1;j<=i;j++){
19: System.out.print(j+"*"+i+"="+i*j+" ");
20: if((i==3&&j==2)||(i==4&&j==2)){
21: System.out.print(" ");
22: }23: }24: System.out.println();
25: }26: }27: }
![Image(18)_thumb[1] Image(18)_thumb[1]](//images0.cnblogs.com/blog/412980/201303/24204427-e44c6666571a4e3b93ec9d8bd5a056d4.png)
- 构造方法是一种特殊的方法,具有以下特点。
(1)构造方法的方法名必须与类名相同。
(2)构造方法没有返回类型,也不能定义为 void,在方法名前面不声明方法类型。
(3)构造方法的主要作用是完成对象的初始化工作,它能够把定义对象时的参数传给对象的域。
(4)构造方法不能由编程人员调用,而要系统调用。
(5)一个类可以定义多个构造方法,如果在定义类时没有定义构造方法,则编译系统会自动插入一个无参数的默认构 造器,这个构造器不执行任何代码。
(6)构造方法可以重载,以参数的个数,类型,或排列顺序区分。
我个人认为规定是没有返回的,但实际是隐式返回的类的对象。
- 构造方法是一种特殊的方法,具有以下特点。
- 案例:实现使一个矩阵的元素转置
程序如下:
1: /*
2: * 功能:将一个三维矩阵进行转置,联系 类的成员方法
3: */
4: package lesson4;5: public class _5ShuZuZhuanZhi {
6: /**
7: * @param args
8: */
9: public static void main(String[] args) {
10: // TODO Auto-generated method stub
11: ShuZuZhuanZhi shuZuZhuanZhi=new ShuZuZhuanZhi();
12: }13: }14: class ShuZuZhuanZhi{
15: public ShuZuZhuanZhi(){
16: int temp=0;
17: int[][] myArr={{1,2,3},{4,5,6},{7,8,9}};
18: for(int i=0;i<3;i++){
19: for(int j=i+1;j<3;j++){
20: temp=myArr[i][j];21: myArr[i][j]=myArr[j][i];22: myArr[j][i]=temp;23: }24: }25: for(int i=0;i<3;i++){
26: for(int j=0;j<3;j++){
27: System.out.print(myArr[i][j]+" ");
28: }29: System.out.println();
30: }31: }32: }
![Image(13)_thumb[17] Image(13)_thumb[17]](http://images0.cnblogs.com/blog/412980/201303/24204419-14d02f595f69413da2566ee0a4ad8073.png)
![Image(14)_thumb[1] Image(14)_thumb[1]](http://images0.cnblogs.com/blog/412980/201303/24204420-3066abafe4434678bbc60e5778eb8d98.png)
![Image(15)_thumb[1] Image(15)_thumb[1]](http://images0.cnblogs.com/blog/412980/201303/24204421-dea49f65da9b49e0b73bb12cd07375d1.png)
![Image(16)_thumb[2] Image(16)_thumb[2]](http://images0.cnblogs.com/blog/412980/201303/24204422-59a6c4dac12144e8ae311a89735d6c55.png)
![Image(17)_thumb[1] Image(17)_thumb[1]](http://images0.cnblogs.com/blog/412980/201303/24204423-861c1b07eb3f4438bb53c9ed60d9cadc.png)
![Image(18)_thumb[1] Image(18)_thumb[1]](http://images0.cnblogs.com/blog/412980/201303/24204427-e44c6666571a4e3b93ec9d8bd5a056d4.png)