Java中的类和对象

  1. 1声明一个类的语法格式

这是写在两个文件的语法结构
public  class 类 {
        特征(Java中的变量)
        行为(java 中暂时不带static的方法)
}

//这个是写在同一个文件的语法结构
calss  Person {
        属性
        String name;
        方法
        public void eat () {
        
        }
    }

1.2创建类和带有main主函数的类可以写在一个文件夹中

2.构造方法

2.1无参构造方法

语句格式

public  类名 (){
    语句体
}
class People {
    //属性
    String name;
    int age;
    
    //定义一个无参构造方法
    public People () {
        System.out.println("嘻嘻");
        //this  当前对象
        name = "狗蛋";
        age = 12;
    }
}

public class Demo4 {
    public static void main(String[] args) {
        //依靠构造方法去创建 对象
        People people = new People();
        
        
        people.name = "二狗";
        people.age = 22;
        System.out.println(people.name);//
        System.out.println(people.age);//
        
        People people2 = new People();
    }
}

2.2有参构造方法

语法结构

public 类名 (参数) {
    
}

/
public Person (String name, int age) {
        this.name = name;
        this.age = age;
    }
class Cat {
    String name;
    int age;
    char sex;

    //一旦在类中写了有参构造方法,默认无参构造方法就不在了
    //有参构造方法 是特殊的方法
    public  Cat (String name, int age, char sex) {
        //this 代表是当前对象  
        //this.name  当前对象的name属性
        this.name = name;
        this.age = age;
        this.sex = sex;
    }
}
public class Demo6 {
    public static void main(String[] args) {
        //创建对象和构造方法有关系,  new Cat();  依靠类中无参构造方法
        Cat cat = new Cat("二虎", 1, '公');
        
        cat.name = "二牛";
        cat.age = 12;
        cat.sex = '母';
        System.out.println(cat.name);//
        System.out.println(cat.age);//
        System.out.println(cat.sex);//
        
    }
}

3对象

3.1对象的内存分析

区域的名字

作用

寄存器

给CPU使用的,和开发没有关系

本地方法栈

JVM在执行操作系统的时候会使用,和咱们没有关系

方法区

存储的是字节码文件 class文件

堆区域

存储对象或者数组的数据,凡是 new的东西和堆有关

栈区

存储的是八大基本数据类型的数据和对象的引用(内存地址)

4构造代码块

构造代码块的目的:也是可以对对象的属性进行赋值。功能是和构造方法是一样的

语法格式:

{
语句体;
}

5成员变量

5.1成员变量

class Person1 {
    
    //属性====》 成员变量  作用域是 整个类都可以使用的
    String name;
    int age;
    public Person1() {
        System.out.println(name);//null   成员变量可以先不赋值,提供一个默认值
    }
    
    public void test () {
        System.out.println(age);//0
    }
    
    
}
public class Demo4 {
    public static void main(String[] args) {
        Person1 person1 = new Person1();
        person1.test();
        
    }
}

5.2局部变量

public class Demo3 {
    public static void main(String[] args) {
        //int i = 20;
        for (int i = 0; i < args.length; i++) {//int i = 0;  局部变量
            System.out.println(i);
            for (int j = 0; j < args.length; j++) {//{}是作用域
                
            }
            for (int j = 0; j < args.length; j++) {
                
            }
        }
        //System.out.println(i);
    }
    
    public  static void test () {//
        int i = 10;
        int a;//先声明变量 没有赋值的
        System.out.println(i);
        //System.out.println(a);//局部变量在使用的时候要赋值的
    }
    public  static void test1 () {
        int i = 10;
        System.out.println(i);
    }
    
}

6封装

Java封装 对属性的封装, 对方法的封装 , 对类的封装

现在咱们对属性进行封装:s

1.为每个属性加上一个修饰符 private (私有的)

2.在实体类中,书写相对应的set方法和get方法 进行操作

package com.qf.test;


class People {
    //对象属性进行封装  加private关键字
    private String name;
    private int age;
    
    //借助于set(设置)方法对属性进行赋值
    //有一定规则的:  set方法 (设置值的时候) 没有返回值的  void
    //setName  为啥叫?setName    set+ 变量的名字 作为咱们方法的名字 采用小驼峰的命名规则
    public void  setName (String name) {//此时 name = "黑蛋儿"
        this.name = name;// this.name = "黑蛋儿";
    }
    //借助于get(得到)方法对属性进行取值  得有返回值的
    public String getName () {
        return this.name;
    }
    
    public void setAge (int age) {
        this.age = age;
    }
    
    public int getAge () {
        return age;
    }
    
    
    
    
}
public class Demo5 {
    public static void main(String[] args) {
        People people = new People();
        //结果发现报错了   私有的变量只能在本类中使用,出了这个类无法使用  咋办?
    
        people.setName("黑蛋儿");//会赋值给 第12行的方法的形参name
        //以上代码已经将"黑蛋儿"  赋值给对象的name
        people.setAge(18);
        //取值
        System.out.println("people的名字为:"+people.getName());
        System.out.println("people的年龄为:"+people.getAge());
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值