Java面向对象1

Java面向对象1

面向对象:强调具备了功能的对象,以类/对象(关注名词)为最小单位,考虑谁来做

面向对象思想(执行者—>指挥者)

  • 根据问题,选择问题所针对的现实世界的实体
  • 从实体中找解决问题的属性和功能,形成概念世界中的类
  • 抽象实体用计算机语言描述,形成计算机中的类的定义(借助程序语言,百类构造成计算机能识别处理的数据结构)
  • 将类实例转换成计算机世界中的对象。对象是计算机世界中解决问题的最终工具

Java语言基本元素

类与对象的使用

1.创建类,设计类的成员
2.创建类的对象
3.通过“对象.属性”或是“对象.方法”调用对象的结构
属性=成员变量=field=域,字段
方法=成员方法=函数=method

创建类的对象=类的实例化=实例化类

类与对象

类:对一类事物的描述,是抽象的,概念上的定义

对象:实际存在的该类事物的每个个体,因而也称为实例

  • 对象的功能取决于类的设计(类的成员)

实操

//测试类
public class Demo01 {
    public static void main(String[] args) {
        //创建person的对象1
        Person p1 = new Person();

      /* 调用对象的结构 :属性,方法 */
        //调用属性:“对象.属性”
        p1.name = "Tom";
        p1.isMale = true;
        System.out.println(p1.name);

        //调用方法:“对象.方法”
        p1.eat();
        p1.sleep();
        p1.talk("chinese");

        /*=============================================================*/
        //对象2
        Person p2 = new Person();
        System.out.println(p2.name);
        /*============================================================*/
        Person p3 = p1;//p1对象的地址赋值给p3,导致p1,p3指向了堆空间中同一对象的实体
        System.out.println(p3.name);
        p3.age = 10;
        System.out.println(p1.age);
    }
}


//类
class Person{
    //属性
    String name;
    int age = 1;
    boolean isMale;

    //方法
    public  void eat(){
        System.out.println("人可以吃饭");
    }
    public void sleep(){
        System.out.println("人可以睡觉");
    }
    public void talk(String language){
        System.out.println("人可以说话使用的是"+language);
    }
}

内存解析

  • 堆:存放对象实例(new都在堆里)
  • 栈:存储局部变量
  • 方法区:存储类信息,常量,静态变量,即时编译器编译后的代码

属性和局部变量

类中属性的使用属性(成员变量) 和  局部变量
 相同:1.定义格式:类型+名字=值
      2.先声明后使用 
      3.有自己的作用域
 不同 1.类中声明的位置不同   
          属性:直接定义在类的一对{}中   
          局部变量:声明在方法内,方法形参,代码 块,构造器形参,构造器内部
     2.关于权限修饰符的不同   
          属性:在声明时,指明其权限,使用权限修饰符(常用private,public,却省(不写),protected)  
          局部变量:不可以使用权限修饰符
     
  默认初始化值属性:
     类的属性,根据类型来默认    
       整型:0    
       浮点型:0.0    
       字符型:0或是’\u0000‘   
       布尔型:false    
       引用数据类型(类,数组,接口):null
     局部变量:没有初始化值  
       一定要显式赋值  
       注:形参在调用时再赋值
     
  加载的位置
     属性:堆(非static)
     局部变量:栈
   public static void main(String[] args) {
        User u1 = new User();
        System.out.println(u1.name);
        System.out.println(u1.age);

       u1.talk("中文");
       u1.eat();
    }
}

class User{
    //属性
    String name;
    int age;

    public void talk(String language) {//形参:language
        System.out.println("我们使用" + language + "进行交流");
    }

    public void eat(){
        String food = "包子";//局部
        System.out.println(food);
    }

posted @ 2022-01-28 19:49  T,a,o  阅读(32)  评论(0编辑  收藏  举报