Java OOP day0

1.什么是类?什么是对象?
1)现实世界是由很多很多的对象组成的
基于对象抽出了类
2)对象:真实存在的单个的个体
类:类型/类别,代表一类个体
3)类中可以包含:
3.1)所有对象所共有的属性(静)———成员变量
3.2)所有对象所共有的行为(动)———方法
4)一个类可以创建多个对象,
同一个类创建的对象,结构相同,数据不同
5)类是对象的模板,对象是类的具体的实例

2.如何创建类?如何创建对象?如何访问成员?

1).定义一个类,包括了成员变量的的定义和方法的定义(方法的修饰词不能有static),用于体现对象共有的属性和描述对象的行为,封装对象的功能。其中成员变量用于描述该类型对象共同的数据结构。如没主动创建方法,系统会自动为这个类生成一个无参构造方法。
class 类名{
成员变量类型 变量名称;
……
修饰词 返回值类型 方法名称([参数列表]){
方法体…..
}
……
}
2).类定义后,用new 类名();创建对象,这个过程通常称为实例化。
对象创建后,其成员变量可以按照系统默认值初始化。
byte,short,int,long,char————–0
float,double————————–0.0
boolean——————————-false
char型——————————–/u0000
String(引用类型)———————-null

3).对对象进行访问控制需要使用一个特殊的变量—引用。引用类型变量存放的是该类对象的地址,也叫“指向该类的对象”,通过这个变量,就可以访问控制对象的成员变量或调用方法。同类型“引用”可以相互赋值,不会在堆中创建新对象,但在栈中存储同样的对象地址。对于“引用”可以赋值为null,表示没有存放任何地址,此时不能通过它访问对象,会报空指针NullPointException错误。
类名 引用 = new 类名();

练习:
1.完成Student与StudentTest类:
1)Student类:
1.1)成员变量:name,age,address,className,stuId
1.2)方法:study(),sayHi()
2)StudentTest类:
2.1)main()方法中创建学生对象并测试

2.完成Car与CarTest类:
1)Car类:
1.1)成员变量:brand,color,price
1.2)方法:setInfo(..),stop(),forward(..),getInfo()
2)CarTest类:
2.1)main()方法中创建汽车对象并测试

HW:

1.描述类和对象的关系

对象是一个客观存在的实体,是面向对象编程过程中分析与解决问题的出发点与基础。对象的实质就是内存中的一块数据存储区域,其数据结构由定义它的类来决定。
类是抽象的引用数据类型,用于构建对象的模板,对象通过类的实例化产生,基于对象抽出了类,一个类可以创建多个对象,每个对象拥有自己的数据和行为。

2.请描述引用类型和基本类型的区别

除8种基本类型之外,用类名(接口、数组)声明的变量称为引用类型变量,简称“引用”。引用的功能在于访问对象。
基本类型变量本身就包含了其实例数据,而引用类型变量中存储的是某个对象在内存中的地址信息。当一个引用类型变量指向该类的对象时,就可以通过这个变量访问对象。

3.在Tetris项目中实现格子的下落、左移以及获取格子的位置信息的功能

class Cell {
int row, column;

Cell(int r, int c) {
    row = r;
    column = c;
}

void Drop() {
    row++;
}// 每下落一格,行数加一

void MoveLeft(int n) {
    column -= n;
}// 每左移一格,列数减一

void MoveRight(int n) {
    column += n;
}

String GetCellInfo() {// 获取行号,列号信息
    return row + "," + column;
}


public static void main(String[] args) {
    Cell c=new Cell(1,3);
    PrintWall(c);
    String receipt=c.GetCellInfo();
    do{
        System.out.println("请输入数字1、2 、3 、0选择相应的功能:");
        Scanner sc=new Scanner(System.in);
        String prompt=sc.next();

        if(prompt.equals("1")){
            System.out.println("格子下落一行");
            c.Drop();
            PrintWall(c);
        }
        if(prompt.equals("2")){
            System.out.println("格子左移一列");
            c.MoveLeft();
            PrintWall(c);
        }
        if(prompt.equals("3")){
            System.out.println("格子右移一列");
            c.MoveRight();
            PrintWall(c);
        }
        if(prompt.equals("0")){
            System.out.println("Tks for use");
            break;
        }
        }while(true);

}

public static void PrintWall(Cell cc){
    for(int r=1;r<=9;r++){
        for(int c=1;c<=5;c++){
            if(r==cc.row&&c==cc.column){
                System.out.print("*  ");
            }else{
                System.out.print("-  ");
            }               
        }
        System.out.println();
    }
}

}

tips:重点是俄罗斯方块项目,一定要掌握。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值