java基础6-面向对象

重点:获取已有对象并使用/如何自己设计对象并使用

1.类和对象

类:是对象共同特征的描述

对象:是真实存在的具体东西

在java中必须先设计类,才能获得对象。

定义类:

public class 类名 {              public class phone{            如何得到类的对象
1. 成员变量(代表属性,一般是名词)        //属性(成员变量)               类名 对象名 = new 类名();
2. 成员方法(代表行为,一般是动词)        String brand;                phone p = new Phone();
3. 构造器                     double price;
4. 代码块                    //行为(方法)                 如何使用对象
5. 内部类                    public void call(){}            访问属性: 对象名.成员变量
}                         public void playGame(){}}         访问行为: 对象名.方法名(...)

示例:

public class Java01 {
    public static void main(String[] args) {

        Phone p = new Phone();

        p.brand="小米";
        p.price=1999;
        System.out.println(p.brand);
        System.out.println(p.price);

        p.call();
        p.playGame();
    }
}
public class Phone {
    String brand;
    double price;

    public void call(){
        System.out.println("打电话");
    }

    public void playGame(){
        System.out.println("玩游戏");
    }
}

定义类的补充注意事项:

用来描述一类事物的类,专业叫做javabean类。在这一类中是不写main方法的。

在以前编写main方法的类叫做测试类。可以在测试类中创建javabean类的对象并进行赋值调用。

类名首字母建议大写,需要见名知意,驼峰模式。

一个java文件中可以定义多个class类,且只能一个类是public修饰,而且public修饰的类名必须成为代码文件名。实际开发中建议还是一个文件定义一个class类。

成员变量的完整定义格式是:修饰符 数据类型 变量名称 = 初始化值; 一般无需指定初始化值,存在默认值。

对象的成员变量的默认值规则。

2.封装

原则:对象代表什么,就得封装对应的数据,并提供数据对应的行为

private关键字:是一个权限修饰符;可以修饰成员(成员变量和成员方法);被private修饰的成员只能在本类中才能访问

public class Student {
    private String name;
    private int age;
    private String phone;
    public Student(String name, int age, String phone) {
        this.name=name;
        this.age=age;
        this.phone=phone;
    }
    public void getName(){
        System.out.println(name);
    }
    public void setName(String name){
        this.name=name;
    }
}

public class Java01 {
public static void main(String[] args) {
Student s = new Student("张三", 18, "13800000000");
s.getName();
s.setName("李四");
s.getName();
}
}
 
  • private关键字是一个权限修饰符
  • 可以修饰成员(成员变量和成员方法)
  • 被private修饰的成员只能在本类中才能访问
  • 针对private修饰的成员变量如果需要被其他类使用,提供相应的操作
  • 提供set方法用于给成员变量赋值,提供gey方法用于获取成员变量的值,方法用public修饰

3.this关键字

public class Student{
    private int age;//成员变量
    public void method(){
        int age = 10;//局部变量
        System.out.println(age);
  }      
}

使用this.xxx调用的是成员变量,如果直接写age采用就近原则

this的作用可以区别成员变量和局部变量

4.构建方法

构造方法也叫做构造器、构造函数。 作用:在创建对象的时候给成员变量进行赋值的。

创造对象的时候,虚拟机会自动调用构造方法,作用是给成员变量进行初始化的。

构造方法的格式

public class Student{
    修饰符  类名(参数){
               方法体;
    }
}

特点:

  • 方法名与类名相同,大小写也要一致。
  • 没有返回值类型,void也没有。
  • 没有具体的返回值(不能由return带回结果数据)public class Student {
private String name;
    private int age;

    public Student() {
        //空参构造方法 虚拟机会添加
        System.out.println("Student Constructor");
    }
    public Student(String name, int age) {//有参构造方法
        this.name=name;
        this.age=age;
    }
 //如果类中没有定义有参构造方法,虚拟机会添加一个空参构造方法,否则不会添加
//两种构造方法名相同,但是参数不同,是构造方法的重载
}

5.标准的javabean类

类名需要见名知意;成员变量使用private修饰;提供至少两个构造方法:无参构造方法/带全部参数的构造方法;成员方法:提供每一个成员变量对应的setXxx() / getXxx(), 如果还有其他行为,也需要写上

IDEA快捷生成键Alt+Insert/Alt+Fn+Insert

public class User {
    private String username;
    private String password;
    private String email;
    private int age;
   
    public User(){
    }
    public User(String username, String password, String email, int age) {
        this.username = username;
        this.password = password;
        this.email = email;
        this.age = age;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getEmail() {
        return email;
    }
    public void setEmail(String email) {
        this.email = email;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
}

6.对象内存图

image

 字节码文件会先加载到方法区。

当完全出栈,没有人使用堆中的数据,相关数据会变成垃圾

两个引用指向同一个对象是赋值为地址,两者修改同一个地址中的数值

7.局部变量和成员变量

image

 

posted @ 2025-10-12 19:37  chen1chen  阅读(12)  评论(0)    收藏  举报