类和对象(上)——JavaSE

文章目录

  • 1.对面向对象的初步认识
    • 1.1什么是面向对象
    • 1.2面向过程和面向对象
  • 2.类定义和使用
    • 2.1简单认识类
    • 2.2类的定义格式
    • 2.3类的定义的举例(定义一个类)
  • 3.类的实例化
    • 3.1定义
    • 3.2举例说明
    • 3.总结
    • 3.4类和对象的说明
  • 4. this引用
    • 4.1什么是this引用
    • 4.2this引用的特性
    • 4.3this的用法
  • 5.对象的构造以及初始化
    • 5.1构造方法
    • 5.2默认初始化
    • 5.3就地初始化
  • 6.封装
    • 6.1封装的概念
    • 6.2访问限定符
    • 6.3包

1.对面向对象的初步认识

1.1什么是面向对象

面向对象是一种解决问题的思想,主要是依靠对象和对象之间交互完成某一个事情

1.2面向过程和面向对象

面向过程注重的是过程,面向对象注重的是对象,面向对象就是要:找对象;创建对象;使用对象

2.类定义和使用

2.1简单认识类

从语法上来讲,就是使用class关键字来定义类的,类将来就是用来描述对象的

2.2类的定义格式

语法格式:

class ClassName{
字段(属性) 或者 成员变量
行为 或者 成员方法
}

2.3类的定义的举例(定义一个类)

class Student {
    public String name;
    public String gender;
    public short age;
    public double score;
    public void doClass(){
        
    }
    public void doHomework(){
        
    }
    public void exam(){
        
    }
}

注意:
1.类:类似于"图纸",而通过类产生一个真正的实体就是对象
2.类名采用大驼峰
3.一般一个文件中最好只定义一个类,不要写多个
4.main方法所在的类一般要使用public修饰
5.public修饰的类必须要和文件名相同
6.不要轻易去修改public修饰的类的名称,如果要修改,如下两张图片介绍了如何修改
类和对象(上)——JavaSE_第1张图片

类和对象(上)——JavaSE_第2张图片

3.类的实例化

3.1定义

用类类型创建对象的过程,称为类的实例化,在java中采用new关键字,配合类名来实例化对象。

3.2举例说明

public class Student {
    public String name;
    public String gender;
    public short age;
    //age = 18;//不能另起一行
    public double score;
    public void doClass(){
        System.out.println(name+" "+" "+gender+" "+age+" "+score+" "+"上课");
    }
    public void doHomework(){
        System.out.println(name+" "+gender+" "+age+" "+score+" "+"写作业");
    }
    public void exam(){
        System.out.println(name+" "+" "+gender+" "+age+" "+score+" "+"考试");
    }

    public static void main(String[] args) {
        Student student = new Student();//通过 new 关键字来实例化一个Student对象
        student.age = 18;
        student.gender = "女";
        student.name = "李梅";
        student.score = 85;
        student.doClass();
        student.doHomework();
        student.exam();
    }
}

3.总结

1.①通过对象的引用,可以访问和修饰对象中的成员
②当成员变量没有初始化的时候,他们的值都是默认值,引用类型的默认值都是null,基本类型的默认值都是其对应的零值,int对应的是0;double对应的是0L;float对应的是0.0;Boolean对应的是false;char对应的是’\u0000’
2.属性\字段分为:普通的成员属性\成员变量;静态的成员属性\成员变量
3.属性是定义在方法的外部,类的内部

3.4类和对象的说明

1.类只是一个模型一样的东西,用来对一个实体进行描述,限定了类有哪些成员
2. 类是一种自定义的类型,可以用来定义变量,但是在java中用类定义出来的变量我们成为对象
3. 一个类可以实例化出多个对象,实例化出的对象 占用实际的物理空间,存储类成员变量

4. this引用

4.1什么是this引用

this代表的是指向当前对象的一个引用

public class MyDate {
    public int year;
    public int month;
    public int day;
    //局部变量优先原则
    //解决了形参名不小心与成员变量名相同的问题
    public void setDate(int year,int month,int day){
        this.year = year;
        this.month = month;
        this.day = day;
    }
    public void printDay(){
        System.out.println(this.year+"-"+this.month+"-"+this.day);
    }
    public static void main(String[] args) {
        MyDate myDate = new MyDate();
        myDate.setDate(2022,3,21);
        myDate.printDay();
    }
}

类和对象(上)——JavaSE_第3张图片
类和对象(上)——JavaSE_第4张图片
在这里插入图片描述

4.2this引用的特性

1.this的类型:对应类类型引用,即哪个对象调用就是哪个对象的引用类型
2. this只能在"成员方法"中使用
3. 在"成员方法"中,this只能引用当前对象,不能再引用其他对象,具有final属性
4. this是“成员方法”第一个隐藏的参数,编译器会自动传递,在成员方法执行时,编译器会负责将调用成员方法对象的引用传递给该成员方法,this负责来接收
5.this指针不可以为空

4.3this的用法

1.this.成员变量(普通的成员变量,不能是静态的成员变量)
2.this.成员方法(普通的成员方法,不能是静态的成员方法)
3.this() 调用其他的构造方法(必须放在第一行)

5.对象的构造以及初始化

5.1构造方法

1.概念:构造方法是一个特殊的成员方法,名字必须与类名相同,在创建对象时,由编译器自动调用,并且在整个对象的生命周期内只调用一次。
2.特性:

public class MyDate {
    public int year;
    public int month;
    public int day;
    public MyDate(){
        this(2022,3,23);
        System.out.println("不带参数的构造方法");
    }
    public MyDate(int year,int month,int day){
        this.year = year;
        this.month = month;
        this.day = day;
        System.out.println("带三个参数的构造方法");
    }
    public void setDate(int year,int month,int day){
        this.year = year;
        this.month = month;
        this.day = day;
    }
    public void printDay(){
        System.out.println(this.year+"-"+this.month+"-"+this.day);
    }
    public static void main(String[] args) {
        MyDate myDate = new MyDate();
        myDate.setDate(2022,3,21);
        myDate.printDay();
        MyDate myDate1 = new MyDate(2022,3,22);
        myDate1.printDay();
    }
}

注意:
①当我们没有提出任何的构造方法的时候,编译器会帮我们提供一个不带参数的构造方法,也就是说,一个类至少会有一个构造方法
②当我们写了构造方法,编译器就不会帮我们提供不带参数的构造方法了
③上述代码,不带参数的构造方法和带有三个参数的构造方法构成了重载
④名字必须与类名相同
⑤没有返回值
⑥创建对象时由编译器自动调用,并且在对象的生命周期内只调用一次
⑦构造方法中,可以通过this调用其他构造方法来简化代码,但是必须是构造方法中第一条语句且不能形成环

5.2默认初始化

1.当成员变量没有初始化的时候,他们的值都是默认值,引用类型的默认值都是null,基本类型的默认值都是其对应的零值,int对应的是0;double对应的是0L;float对应的是0.0;Boolean对应的是false;char对应的是’\u0000
2.默认初始化后,new关键字后面发生的JVM做的事情(简单介绍):
①检测对象对应的类是否加载了,如果没有加载则加载
②为对象分配内存空间
③处理并发安全问题
④初始化所分配的空间
⑤设置对象头信息(后面介绍)
⑥调用构造方法<>,给对象中各个成员赋值

5.3就地初始化

在声明成员变量时,就直接给出了初始值

public class MyDate {
    public int year = 2022;
    public int month = 3;
    public int day = 21;
    public MyDate(){
    }
    public static void main(String[] args) {
        MyDate myDate = new MyDate(2022,4,2);
        
    }
}

6.封装

6.1封装的概念

1.面向对象程序的三大特性:封装、继承、多态
2.封装:从语法的层次上来说,就是把字段或者方法,使用private修饰符进行修饰,这样在类外,就不能拿到当前字段或者方法了,起到了封装的作用。从概念上来说,就是将数据和操作数据的方法进行有机结合,隐藏内部实现的细节,只对外提供待定的从开的,可访问的接口就可以了
3.快速添加getMyName和setMyName
类和对象(上)——JavaSE_第5张图片
类和对象(上)——JavaSE_第6张图片

public class Animal {
    private String myName;
    private int age;
    private String sex;
    public String getMyName() {
        return myName;
    }
    public void setMyName(String myName) {
        this.myName = myName;
    }
    public void eat(){
        System.out.println(this.myName+" 吃饭");
    }
    public void sleep(){
        System.out.println(this.myName+" 睡觉");
    }
    //类的调用者写的
    public static void main(String[] args) {
        Animal animal = new Animal();
        animal.myName = "tutu";
        animal.eat();
        animal.sleep();
    }
}

6.2访问限定符

类和对象(上)——JavaSE_第7张图片
default权限指:什么都不写时的默认权限

6.3包

1.包的概念:为了更好地管理代码
2.导入包中的类

import java.util.Date;//导入包
public class TextDame {
    public static void main(String[] args) {
        Date date = new Date();
        System.out.println(date.getTime());
    }
}
public class TextDame {
    public static void main(String[] args) {
        java.util.Date date = new java.util.Date();
        System.out.println(date.getTime());
    }
}

3.自定义包
类和对象(上)——JavaSE_第8张图片

在这里插入图片描述
将自定义的包展开:类和对象(上)——JavaSE_第9张图片
类和对象(上)——JavaSE_第10张图片

package com.baidu.www;//导入包
public class Text1 {

}

4.访问权限
同一包中的同一类可以访问,同一包中的不同类可以访问

package com.baidu.www;//导入包

public class Text1 {
    public int data1;
    private int data2;
    int data3;//默认权限,包访问权限
    public void func(){
        System.out.println(data1);//同一包中的同一类
    }
}
package com.baidu.www;

public class Text2 {
    public static void main(String[] args) {
        Text1 text1 = new Text1();
        System.out.println(text1);//同一个包中的不同类
    }
}

5.常见的包
① java.lang:系统常用基础类(String、Object),此包编译器会自动帮我们导入
②java.lang.reflect:java 反射编程包
③ java.net:进行网络编程开发包
④ java.sql:进行数据库开发的支持包
⑤ java.util:是java提供的工具程序包(集合类等) 非常重要
⑥ java.io:I/O编程开发包

你可能感兴趣的:(java,开发语言)