OO.DAY01 类 对象 创建类和对象 访问成员

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_41216869/article/details/79970505
回顾:
1.方法:
  1)封装特定的逻辑功能
  2)尽可能独立,一个方法只干一件事
  3)可以被反复调用多次
  4)避免代码重复,有利于代码维护、有利于团队协作开发
2.方法的定义:
    修饰词 返回值类型 方法名(参数列表){
 方法体
}
3.方法的调用:
  1)无返回值: 方法名(有参传参)
  2)有返回值: 数据类型 变量 = 方法名(有参传参);
              方法名(有参传参);--------------不建议
4.return:
  1)return 值; //1.1)结束方法的执行  1.2)返回结果给调用方
  2)return;    //2.1)结束方法的执行








笔记:


高质量的代码:
  复用性好、扩展性好、维护性好、
  可移植性好、健壮性好、效率高......




1.什么是类?什么是对象?
  1)现实世界是由很多很多对象组成的
    基于对象抽出了类
  2)对象:真实存在的单个个体
    类:类型、类别,代表一类个体
  3)类中可以包含:
    3.1)所有对象所共有的属性/特征(静的)---------成员变量
3.2)所有对象所共有的行为(动的)--------------方法
  4)一个类可以创建多个对象,
    同一类型的对象,结构相同,数据不同
  5)类是对象的模板,对象是类的具体的实例
2.如何创建类?如何创建对象?如何访问成员?
3.引用类型之间画等号:
  1)指向同一个对象Cell c=cc;
  2)对其中一个引用的修改会影响另外一个
    eg:房子钥匙
  基本类型之间画等号:
  1)赋值
  2)对其中一个变量的修改不会影响另外一个
    eg:身份证复印件
4.null:空,没有指向任何对象
       若引用的值为null,则该引用不能再进行任何操作了
       若操作则NullPointerException空指针异常






任务:
1.完成引用之间画等号与null的演示代码
2.完成经典案例一(打印员工信息)
3.至少重写两次:
  1)Cell类,包含:
    1.1)成员变量: row,col
    1.2)方法: drop(),moveLeft(n),getCellInfo()
  2)CellTest类,包含:
    2.1)main(){}
2.2)printWall(Cell cc){}



房子:对象
房子钥匙:引用
配一把钥匙:引用



引用
数据类型   引用类型变量   指向      对象
Cell         c              =       new Cell();



           引用
数据类型  引用类型变量   指向   对象
Student     zs            =      new Student();



    基本类型变量(变量)
int a;








Student zs = new Student();
zs.name = "zhangsan";
zs.age = 25;
zs.address = "LF";


new Student();
new Student();
new Student();





2


步骤:
1)找对象:很多很多小格子
2)抽类:格子类Cell
3)设计类中的成员变量和方法:
4)创建对象并测试






Cell
CellTest


class Cell{ //格子类
  int row; //行号
  int col; //列号
  void drop(){ //下落一格
    row++;
  }
  void moveLeft(int n){ //左移n格
    col-=n;
  }
  String getCellInfo(){ //获取行号和列号
return row+","+col;
  }
}



数组------引用类型
类--------引用类型
String----引用类型



1.5


对象
月饼模子       月饼



1.4


Student zs = new Student();
Student ls = new Student();
Student ww = new Student();
Student zl = new Student();




Student zs = new Student();
zs.name = "zhangsan";
zs.age = 25;
zs.address = "河北廊坊";
zs.stuId = "001";
zs.eat();
zs.sleep();
zs.study();
zs.abc = 123; //编译错误


Student ls = new Student();
ls.name = "lisi";
ls.age = 26;
ls.address = "黑龙江佳木斯";
ls.stuId = "002";
ls.eat();
ls.sleep();
ls.study();


Student ww = new Student();
ww.name = "wangwu";
ww.age = 27;
ww.address = "山东";
ww.stuId = "003";
ww.eat();
ww.sleep();
ww.study();




class Student{
  String name;
  int age;
  String address;
  String stuId;
  void eat(){}
  void sleep(){}
  void study(){}
}



1.3
class Teacher{
  String name;
  int age;
  String address;
  double salary;
  void eat(){}
  void sleep(){}
  void teach(){}
}
class Dog{
  String type;
  String color;
  void 看门(){}
  void 咬(){}
}
class Car{
  String type;
  int width;
  int height;
  double price;
  String color;
  void start(){}
  void run(){}
  void stop(){}
  void back(){}
}



面向过程弊端:
1)缺乏对数据的封装
2)数据和方法(操作数据)的分离




基本数据类型-------------------不够
数组---------------------------不够
自己造类型---------------------想装什么就装什么


class Emp{ //类、数据类型
  String name;
  int age;
  double salary;
  void print(){
    System.out.println("name="+name);
System.out.println("age="+age);
System.out.println("salary="+salary);
  }
}


public class Test{
  public static void main(String[] args){
    Emp e = new Emp(); //创建Emp的一个对象
    e.name = "zhangsan";
e.age = 25;
e.salary = 5000;
    e.print();
  }
  
}











阅读更多

没有更多推荐了,返回首页