java类和对象



一、面向对象(OPP)

关注对象与对象之间如何协助完成这件事。
对象:属性+行为
类:对一个实体对象进行描述。类名(大驼峰)
类:字段/成员变量/成员属性(定义在类中方法外)+方法
通常1个java文件一个类。
每一个类对应一个.class文件(字节码文件)。类里面的方法不加static。
引用指向对象,实例化对象。类的实例化·。可以使用new关键字实例化创建多个对象。每一个对象都有相同的属性和方法。用.访问属性·和方法。类是一个自定义类型。
局部变量使用·必须·要初始化。
成员变量可以无,在没有初始化时都有一个默认值,引用类型为null,int为0,char:‘\u0000’;
boolean:false
成员变量在定义时初始化为就地初始化。不好。

this

用this解决局部变量给自己赋值,成员变量没被赋值的情况。
谁调用了类的实例化对象方法,这个this就是谁。当前对象的引用。this只能在成员方法中使用。
this.属性
this.方法名:在一个方法中调用另一个成员方法。
this()调用构造方法,必须第一行。不能形成环。

构造方法

实现成员变量初始化。
方法名{参数列表}{方法体}
没有返回值,方法名必须与类名一致。可以有多个。
没有写构造,编译器生成不带参数。有就不写。

Student student1 = new Student();
 Student student2=new Student(23);

写带参数构造方法,用this对成员变量赋值。
一个对象的产生至少有两部:
1.为对象分配内存
2.调用合适的构造方法。(至少一个)
自动构建构造方法,鼠标右键-》generate->constructor->然后选中所需要构建的构造方法。
修改类名:鼠标右键-》在这里插入图片描述
构造方法不能自己调用自己。this(参数)只能在构造方法中才可以调用。而且只能放在构造方法的第一行。

 	public Student() {
        this(34,"sdh");//先调带2个参数的构造方法,然后再往下运行。
        System.out.println("hdsgdsgh");
    }

二、封装

default默认权限,什么都不写的时候。
protected受保护的。
privite是私有的,一般来做封装。把类的细节封装,只有统一包中同一类才可访问。
用set和get方法提供公开的接口。
自动生成set和Get调用私有属性的方法。generate->选中如下即可
在这里插入图片描述
在这里插入图片描述

java中组织类的一种方法。
导包:

import java.util.Arrays;
import java.util.Date;

 		Date date =new Date();
        int[] arr={1,3,4,5,6,2,52};
        Arrays.sort(arr);

可以将以上的导包简化为:
*是通配符,可以充当任何类。不是导util下所有类,而是用到哪个类导哪个类。(最好还是自己指定,不用通配符,否则如果两个使用了通配符都有同一个包不好搞)

import java.util.*;

 		Date date =new Date();
        int[] arr={1,3,4,5,6,2,52};
        Arrays.sort(arr);

注意如果导入的两个包通配符底下都有相同的包,如Data(),这时就必须自己指定是要用哪个包中的Date()。
在这里插入图片描述

在这里插入图片描述
必须自己指定:
在这里插入图片描述
package:声明当前java文件在哪个包当中。
自定义包:包名必须小写,而且与路径匹配。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
包访问权限:
如果是同一个包下面调用对象的属性或方法不会报错(同一包中的类的访问权限)。如果是不同的包,权限不是public调用属性或方法就要报错。

有public
在这里插入图片描述
在这里插入图片描述
无:
在这里插入图片描述
在这里插入图片描述

static

在方法当中定义的变量是局部变量,而静态的变量属于类变量。随着类的加载而被创建,而局部变量是调用该方法的时候,才创建的。
所以,此时两种变量的性质是冲突的。Java当中不允许定义局部的静态变量。

1.修饰成员变量

  1. private int age;//普通成员变量,每个对象都有一份(方法外,类里)
  2. public static String classRoom=“3784”;//静态成员变量,所有对象共用一份。直接初始化。
    静态成员的访问直接用类名.的方式进行访问。(静态成员变量不属于对象)
    它存储在方法区,生命周期伴随类的一生。
    在这里插入图片描述
  3. 局部变量:方法内部定义的方法。
    引用只能指向对象,不能指向引用。一个引用不可以指向多个对象,只能指向一个。
    在这里插入图片描述
    输出:教室号,不会空指针异常。因为classRoom不在对象中,不属于对象。
    student2=null代表不指向任何对象。

2.修饰方法

方法:
在这里插入图片描述
用类名调用:或是直接调:
在这里插入图片描述
静态方法内部不能调用非静态方法。因为静态方法不依赖对象但是非静态方法依赖。因此静态方法内部不能够使用this。静态方法里不能用成员变量,静态方法只能用静态属性。
静态的在加载时就初始化。静态的是最先被执行的。

初始化

就地初始化和静态代码块初始化

static{
classRoom="3773";//静态变量初始化
}

静态代码初始化在就地初始化前,按就地初始化的值。之后,按静态代码块初始化的值。

结果为:3784

 static{
        classRoom="89888";
        System.out.println("静态代码块");
    }

    public static String classRoom="3784";//静态成员变量,所有对象共用一份。

结果为89888

 public static String classRoom="3784";//静态成员变量,所有对象共用一份。
    static{
        classRoom="89888";
        System.out.println("静态代码块");
    }

有继承的初始化
在这里插入图片描述
在这里插入图片描述

代码块

代码块调用顺序:静态代码块-》构造代码块-》构造方法
在这里插入图片描述
注意:如果是调用带参数的构造方法,由于构造代码块一定比构造方法更先执行,所以,最后调用对象的值是带参数构造方法所赋值的。
构造代码块必须在实例化对象的时候才能执行,没有实例化对象只执行静态代码块。没有调用类(加载类)就啥也没有。

对象的打印

 		Student student1 = new Student(88,"李四");
        System.out.println(student1);//打印为Student@4eec7777

在类里面写toString:

 public String toString(){
        return "lixi";
    }
    

然后打印为lixi
编译器可以生成:generate->tostring即可
重写tostring,对象的打印。

 @Override//注解
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

在这里插入图片描述

继承和多态

继承:对共性进行抽取,把抽取出来的共性放到父类中。好处:达到了代码的复用。
在子类中时,如果子类和父类有相同的属性,this关键字优先指子类,用super指父类。
方法的重载可以不在同一个类中。
子类继承父类,子类需要先帮助父类进行初始化成员构造。
子类在完成构造之前,必须先完成父类的构造。
在这里插入图片描述
然后可以在构造方法中初始化自己的成员。super构造方法必须第一行。

在这里插入图片描述
在调用有参数的子类构造方法。
在这里插入图片描述
静态的不会被执行第二次

final关键字

用其修饰,使变量变为常量。定义的时候可以不初始化,后面初始化也可。但是只能初始化一次。被其修饰的不能够被继承。
在这里插入图片描述


java不支持多继承。

总结

出来混,迟早要还的!!!
实习的面试是很简单的,不要觉得自己很自律,从每一天找借口不完成每一天的任务时,你就不是一个自律的人!!!
除非是不可抗力的因素。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值