Bootstrap

javaSE学习 day05

目录

1.什么是对象

1.1类和对象

1.1.1类

1.1.2对象

1.2语法

1.2.1设计类

1.2.2使用对象

1.3开发的应用

2.设计类的细节

2.1构造器

2.1.1语法

2.1.2特点(调用时机)

2.1.3应用场景

2.1.4注意事项

2.2this关键字

2.2.1this关键字是什么

2.2.2开发场景

2.3封装

2.3.1封装是什么

2.3.2JavaBean的规范

2.3.3实体类的应用场景

3.static(关键)

3.1static是什么

3.2修饰成员变量特点

3.2.1静态成员变量

3.2.2实例变量

3.3修饰成员方法特点

3.3.1静态方法是什么

3.3.2静态方法的调用

3.3.3应用场景

3.3.4这样应用的好处

3.3.5为什么工具类要用静态方法

3.3.6工具类定义时有什么要求

3.4静态方法注意事项


1.什么是对象

1.1类和对象

1.1.1类

类定义了数据的结构,对象才是实实在在的例子。(实例)

1.1.2对象

对象就是一种特殊的数据结构。对象是用类new出来的,有了类就可以创建出对象。

1.2语法

1.2.1设计类

public class 类名{
    1、变量,用来说明对象可以处理什么数据
        数据类型 变量名;
    2、方法,描述对象有什么功能,也就是可以对数据进行什么样的处理
        public 返回值类型 方法名(参数列表){}
}
public class Teacher {
    private String name;
    private String id;
    public void teach(){
        System.out.println("工号为"+id+"的"+name+"老师正在讲课");
    }
}

1.2.2使用对象

【1】创建对象语法

        类名 对象名 = new 类名()

Teacher teacher=new Teacher();

【2】调用对象属性

        对象名.属性名

System.out.println("我的女朋友叫"+girlFriend1.getName()+",身高"+girlFriend1.getHeight()+"厘米,体重"+girlFriend1.getWeight()+"斤。");

【3】调用方法属性

        对象名.方法名

teacher.teach();

1.3开发的应用

【1】想描述什么事物,就定义什么类,就创建对应对象去处理。

【2】万物皆对象,描述什么事物,就将事物的数据定义到类中。

2.设计类的细节

2.1构造器

2.1.1语法

【1】方法名和类名一样

【2】没有返回值 连void都没有

【3】构造器允许重载

    public Teacher() {
    }

    public Teacher(String name, String id) {
        this.name = name;
        this.id = id;
    }

2.1.2特点(调用时机)

【1】创建对象的时候会调用对应的构造器。

【2】new 类名() 都会调用该类的构造器。

2.1.3应用场景

【1】创建对象的同时 为对象的成员变量完成赋值操作。简单来说 就是完成成员变量的初始化

【2】对象创建时,我们可以指定对象去调用哪个构造器执行(有参/无参)。

2.1.4注意事项

【1】类默认就自带了一个无参构造器

【2】如果为类定义了有参数构造器,类默认的无参数构造器就没有了,此时如果还想用无参数构造器,就必须自己手写一个无参数构造器出来。

2.2this关键字

2.2.1this关键字是什么

【1】this就是一个变量,表示当前对象的变量。(this指向当前对象的空间)

【2】方法被那个对象调用了,方法中的this就是谁

public class Demo {
    String name;
    double score;
    public void printThis(){
        System.out.println(this);
    }
}
public static void main(String[] args) {
        Demo demo=new Demo();
        System.out.println(demo);
        demo.printThis();
}

2.2.2开发场景

java变量的访问遵循就近原则。如果 局部变量名字和成员变量名字一样,优先默认选择局部变量,我想区分可以使用this.变量名 表示用的是成员变量

public class Demo {
    String name;
    double score;
    public void like(String name){
        System.out.println(this.name+"喜欢"+name);
    }
}
public static void main(String[] args) {
        Demo demo1=new Demo();
        demo1.name="小卢";
        demo1.like("御姐");
    }

2.3封装

2.3.1封装是什么

【1】就是一种封装。

【2】面向对象的三大特征:封装、继承、多态

【3】封装的设计要求:合理隐藏、合理暴露

【4】合理隐藏,用private修饰的,外界无法直接访问。 

【5】合理暴露 用public修饰的,允许外界直接访问。

2.3.2JavaBean的规范

【1】javabean开发中 又叫做实体类,专门设计的来处理数据的类。

【2】合理隐藏:成员变量私有

【3】合理暴露:设计get、set方法

【4】提供无参构造器,有参构造可选

public class GirlFriend {
    private String name;
    private double height;
    private double weight;

    public GirlFriend(String name, double height, double weight) {
        this.name = name;
        this.height = height;
        this.weight = weight;
    }

    public GirlFriend() {
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public double getHeight() {
        return height;
    }

    public void setHeight(double height) {
        this.height = height;
    }

    public double getWeight() {
        return weight;
    }

    public void setWeight(double weight) {
        this.weight = weight;
    }
}

2.3.3实体类的应用场景

实体类定义出来只负责存储数据。数据的操作交给其他类的对象来使用。实现了数据和数据业务处理分离。

3.static(关键)

3.1static是什么

静态关键字,可以修饰成员变量,成员方法

3.2修饰成员变量特点

3.2.1静态成员变量

【1】类名.静态变量(推荐)          对象名.静态变量(不推荐)

【2】属于类,与类一起加载一次,在内存中只有一份,会被类的所有对象共享。如果某个数据只需要一份,希望能够被共享,这个数据就用static修饰

3.2.2实例变量

【1】没有static修饰的变量 叫实例变量,属于对象,每个对象都有一份

public class Demo {
    //静态变量  有static 修饰的 属于类,只加载一次,可以通过类名直接访问, 可以被类的对象共享
    static String name;//饮水机

    //实例变量 没有static修饰 ,属于对象,每个对象都有一份
    int age;//水杯
}
public static void main(String[] args) {
        //静态变量属于类 可以通过类名调用 不需要有对象
        //强烈推荐 静态变量通过类名调用
        Demo.name = "马东";
        System.out.println(Demo.name);

        //创建了两个学生对象
        Demo s1 = new Demo();
        s1.age = 18;
        s1.name="马东什么?";//不建议通过对象名调用 不属于对象

        Demo s2 = new Demo();
        s2.age = 20;
        s2.name="什么冬梅?";

        //输出 实例变量 实例变量属于对象
        System.out.println(s1.age);//18
        System.out.println(s2.age);//20 1

        //输出 静态变量 可以被对象共享 不推荐!!
        System.out.println(s1.name);//什么冬梅?
        System.out.println(s2.name);//什么冬梅?
    }

3.3修饰成员方法特点

3.3.1静态方法是什么

被它修饰的成员方法,叫静态方法,可以直接通过类名调用

3.3.2静态方法的调用

属于类,所以类名直接方法(用对象访问,也可以但不推荐)

3.3.3应用场景

做工具类。

3.3.4这样应用的好处

工具类中的方法都是一些静态方法,每个方法用来完成一个功能,以便供给开发人员直接使用。

3.3.5为什么工具类要用静态方法

【1】实例方法需要创建对象来调用,此时对象只是为了调用方法,对象占内存,这样会浪费内存

【2】静态方法,直接用类名调用即可,调用方便,也能节省内存

3.3.6工具类定义时有什么要求

工具类没有创建对象的需求,建议将工具类的构造器进行私有

3.4静态方法注意事项

【1】静态方法中可以直接访问静态成员,不可以直接访问实例成员。静态只能访问静态。

【2】实例方法中既可以直接访问静态成员,也可以直接访问实例成员。

【3】实例方法中可以出现this关键字,静态方法中不可以出现this关键字的。(因为没有创建对象)

public class Person {

    public static void show(){
        System.out.println("这是一个静态方法 通过类名调用");
    }

    public void method(){
        System.out.println("这是一个实例方法,通过对象名调用");
    }
}
public static void main(String[] args) {
        //演示 静态方法 直接通过类名调用
        Person.show();

//        Person.method();method属于对象需要先创建对象才能使用
        Person p = new Person();
        //演示 普通方法 --实例方法
        p.method();

        //main中可以调用谁
//        printA();//必须有对象才能调用
     printB();//没有对象 直接调用
    }

    public void printA(){
        System.out.println("A");
    }
    public static void printB(){
        System.out.println("B");
    }

;