面向对象

面向对象

基础介绍

  1. 什么是类和对象?
    • 类用于描述共同特征,对象是具体的实例。
  2. 成员变量和方法
    • 成员变量是属性,名词。方法是行为,动词。
    • 类名 对象名 = new类名()
  3. 调用
    • 对象名.成员变量()
    • 对象名.方法()

JAVAbean

  1. 类名首字母大写,采用驼峰模式。
  2. 一个java 文件中可以有多个class类,但public修饰的类只能有一个,且被public修饰的类要与文件名相同。(一个文件写一个类)
  3. 成员变量的完整定义格式: 修饰符 数据类型 变量名 = 初始值; ,如果没有赋予初始值[1]就存在默认值[2]


封装

什么是封装?

  • 对象代表什么,就要封装对应的数据,和对应的行为。

封装需要使用private关键字

  • 可以修饰成员变量和成员方法
  • 只能在本类中使用
  • 针对被private修饰的成员,如果需要被其他类使用,则要提供相对应的操作。
  • 即通过set() get()方法,方法用public修饰
public class GrilFriend {
    //1.类中的变量都要用private修饰
    private String name;
    private int age;
    //2.对每一个私有化的变量,提供set() get()方法。

    //3.set()方法对成员变量进行赋值,只需要赋值,不用返回值,返回值类型用void。
    public void setName(String a){
        name = a;
    }
    //4.get()方法对外提供成员变量的值,不需要接收值,无形参。同时对外提供值,方法的返回值类型要与成员变量的返回值类型一致。
    public String getName(){
        return name;
    }
    public void serAge(int b){
        if(b >= 18 && b <=50 ){
            age = b;
        }else{
            System.out.println("不是喜欢的类型");
        }
    }
    public int getAge(){
        return age;
    }
}
public class GirlFriendText {
    public static void main(String[] args) {
        GrilFriend gf1 = new GrilFriend();
        gf1.serAge(18);
        gf1.setName("小诗诗");

        System.out.println(gf1.getAge());
        String name = gf1.getName();
        System.out.println(name);
    }
}

就近原则和this关键字

在Java中对变量起名,需要起到见名知意的效果。在上面GrilFriend实例中形参a和形参b显然不符合这一要求。

那么我们可以改写成name和age。如下:

public class GrilFriend {
  
    private String name;
    private int age;

    public void setName(String name){
        //局部变量代表测试类中调用方法传递过来的数据
        //左边是成员变量的name
        this.name = name;
    }
   
    public String getName(){
        return name;
    }
    public void serAge(int age){
        if(age >= 18 && age <=50 ){
            this.age = age;
        }else{
            System.out.println("不是喜欢的类型");
        }
    }
    public int getAge(){
        return age;
    }
}

就近原则

public class GrilFriend{
     private int age;//0
    public void method(int age){
        int age = 10;
        System.out.println(age);//10,谁离我近就用谁
        System.out.println(this.age);//代表成员变量
    }
 
}

this

this的作用是区分成员变量和局部变量。

this的本质是方法调用者的地址值。

image-20240725152952420

图中method()调用者是s,所以this(001)=s(001)。

构造方法

格式

修饰类型 类名(参数){}

特点

  1. 方法名与类名一致

  2. 没有返回值类型,void也没有。

  3. 没有具体返回值,也就没有返回结果,没有return.

执行

  1. 创建对象时由虚拟机调用,不能手动调用。
  2. 每创建一次对象,就会调用一次构造方法。

空参构造

  • 如果没有写无参的构造方法,系统会提供默认的无参的构造方法。
  • 如果手动写了无参的构造方法,系统就不提供默认的构造方法。
public class Student{
    private String name;
    public Student(){
        System.out.println("吃饭了吗?");
    }
}
public class StudentText{
    public static void main(String[] args){
        Student s = new Student();
    }
}

结果:吃饭了吗?

有参构造

  • 在初始化对象时,可以同时给对象赋值。
  • 如果写了有参构造,无参构造器就没有了,需要自己写。
public class Student{
    private String name;
    private int age;
    public Student(String name,int age){
        this.name=name;
        this.age=age;
    }
    public void setName(String name){
        this.name= name;
    }
     public String getName(){
        return name;
    }
    //age脑补
}
public class StudentText{
    public static void main(String[] args){
        Student s = new Student("小诗诗",18);
        System.out.println(gf1.getname());
    }
}

两种构造方法的联系

  • 无参的构造方法和有参的构造方法虽然方法名相同,但是参数不同,这就是叫构造方法的重构。
  • 无论使用与否,都要手动书写无参的构造方法和带全部参数的构造方法。
  • 他们的作用是在创造对象时,由虚拟机调用,给成员变量初始化。

标准JavaBean

  1. 类名要见名知意
  2. 成员变量需要用private修饰
  3. 带有两个构造方法(无参和带全部参数)
  4. 对每个成员变量都写上get()和set()方法以及其他行为。

创建构造方法的快捷方式

  1. alt + (Fn) + insert ,选择 select none就创建空参构造;按住Shift点击最后一项全选,就是带全部参数的构造方法。
  2. getter and setter,选上所有的成员变量。
  3. 连接外网,File,settings,Plugins,搜PTG,这个插件可以一秒生成Javabean。

对象的内存图

image-20240725143531523

注意

  1. 遇到Student s = new Student();就会加载Student.class文件。
  2. 在Student类中没有对成员变量赋值,就不会显示初始化,而是默认初始化(name null,age 0)。没有写构造方法,就是空参构造。
  3. s.变量名或s.方法()可以看成地址值.变量名或地址值.方法()
  4. 当方法出栈后,没有变量指向堆空间,对象消失。
  5. 申明局部变量的意思是,对左边的变量申明空间。
  6. 当创建第二个对象时,不需要再加载.class文件
  7. 成员方法在堆空间中有自己的地址值,通过在堆中的地址找到方法区中的方法( study( ) )再进入栈中。

image-20240725151624824

  1. 其中要注意的是变量名 = null,null表示不存在的空间,一旦使用就会断开连接。

基本数据类型和引用数据类型

基本数据类型的定义:数值存储在自己的空间中,

引用数据类型的定义:变量存的是地址值,通过地址使用其他空间的数据。例如:数组

image-20240725152201089

成员变量和局部变量的区别

image-20240725153658113


  1. 类用于描述一类事物,不要在类中赋值。创建对象后,再赋值。 ↩︎

  2. 基本数据类型: byte short int long 默认值:0 ;float double 默认值:0.0 ; boolean 默认值:false ;引用类型:接口 类 数组 String 默认值:null。 ↩︎

posted @ 2024-07-25 15:56  WuHu小猪猪  阅读(45)  评论(0)    收藏  举报