面向对象基础

本文介绍了IntelliJ IDEA的基本使用,包括创建HelloWorld项目、内容辅助键和快捷键的运用。同时,深入讲解了面向对象编程的基础概念,如类与对象、对象内存图、成员变量与局部变量、封装、构造方法以及标准类的制作。通过实例展示了如何创建和使用对象,以及封装的重要性,为初学者提供了全面的入门指导。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

1.IDEA的简单使用

1.1HelloWorld步骤

1.2内容辅助键和快捷键

2.面向对象基础

2.1类和对象

2.2对象内存图

2.3成员变量和局部变量

2.4封装

2.5构造方法

2.6标准类制作


1.IDEA的简单使用

1.1HelloWorld步骤

  1. 创建一个空项目(JavaSE_Code)
  2. 创建一个新模块(idea_test)
  3. 在idea_test模块下的src下创建一个包(com.itheima)
  4. 在com.ithheima包下新建一个类(HelloWorld)
  5. 在idea中执行程序

注意:今后我们会把Java代码都放在项目JavaSE_Code中,每学一个新的知识点,我们都会创建一个新的模块。

1.2内容辅助键和快捷键

快速生成语句
    快速生成main()方法:psvm,回车
    快速生成输出语句:sout,回车

内容辅助键
    Ctrl+Alt+space(内容提示,代码补全)
快捷键
    注释:
        单行:选中代码,Ctrl+/,再来一次,就是取消
        多行:选中代码,Ctrl+Shift+/,再来一次,就是取消

格式化
        Ctrl+Alt+L

2.面向对象基础

2.1类和对象

类:类是对现实生活中一类具有共同属性和行为的事物的抽象。

对象:是能够看得到摸的着的真实存在的实体。

类是对象的抽象,对象是类的实体。

类的定义

/*
    类的定义

    类的定义步骤:
        定义类
        编写类的成员变量(类中方法外的变量)
        编写类的成员方法(和前面的方法相比去掉static关键字)

     手机类:
        类名:
        手机(Phone)

        成员变量:
        品牌(brand)
        价格(price)

        成员方法:
        打电话(call)
        发短信(sendMessage)
*/

public class Phone {
    //成员变量
    String brand;
    int price;

    //成员方法
    public void call(){
        System.out.println("打电话");
    }

    public void sendMessage(){
        System.out.println("发短信");
    }
}
public class Phone {
    //成员变量
    String brand;
    int price;

    //成员方法
    public void call(){
        System.out.println("打电话");
    }

    public void sendMessage(){
        System.out.println("发短信");
    }
}

对象的创建和使用

/*
    创建对象
        格式:类名 对象名=new 类名();
    使用对象
        1.使用成员变量
            格式:对象名.变量名
        2.使用成员方法
            格式:对象名.方法名()
*/

public class PhoneDemo {
    public static void main(String[] args) {
        //创建对象
        Phone p=new Phone();

        //使用成员变量
        System.out.println(p.brand);
        System.out.println(p.price);

        //给成员变量赋值
        p.brand="小米";
        p.price=2999;

        System.out.println(p.brand);
        System.out.println(p.price);

        //使用成员方法
        p.call();
        p.sendMessage();
    }
}

学生案例

Student.java

public class Student {
    //成员变量
    String name;
    int age;

    //成员方法
    public void study(){
        System.out.println("好好学习,天天向上");
    }

    public void doHomework(){
        System.out.println("键盘敲烂,月薪过万");
    }
}

StudentDemo.java

public class StudentDemo {
    public static void main(String[] args) {
        //创建对象
        Student s=new Student();

        //使用对象
        System.out.println(s.name+","+s.age);

        s.name="林青霞";
        s.age=30;

        System.out.println(s.name+","+s.age);

        s.study();
        s.doHomework();
    }
}

2.2对象内存图

单个对象

1.创建对象 

 2.使用成员变量

 3.使用成员方法

 4.程序结束(这里有误,堆内存清空)

 注意:

  • 创建对象实际上是将后面的new 类名()的地址值赋给对象。
  • 创建对象后,成员变量会一直保存在堆内存中,直到程序结束;而使用成员方法不同:
    •  调用方法,就是入栈。
    • 调用方法完毕后,就是出栈。
  • main方法的调用也是入出栈。

多个对象

1.创建对象s1

2.对象s1使用成员方法

3.创建对象s2

4.对象s2使用成员方法

 注意:

  • 对象s1和s2是两个不同的对象,因为对象的地址不同。
  • 对象s1和s2的成员变量不同,但是它们的成员方法相同,只是调用者不同。

多个对象指向相同

1.创建对象s1

 2.创建与对象s1相同的对象s2(Student s2=s1;)

 

注意:

  • 对象s1和s2是相同,因为对象的地址相同。
  • 当两个对象指向相同的时候,其中一个对象修改堆内存中的数据时,另一个对象访问堆内存的数据就是刚刚修改过的。

2.3成员变量和局部变量

2.4封装

private关键字

  • 是一个权限修饰符
  • 可以修饰成员(成员变量和成员方法)
  • 作用是保护成员不被别的类使用,被private修饰的成员只在本类中才能访问

针对private修饰的成员变量,如果需要被其他类使用,提供相应的操作

  • 提供"get变量名()"方法,用于获取成员变量的值,方法用public修饰
  • 提供"set变量名(参数)”方法,用于设置成员变量的值,方法用public修饰

Student.java

public class Student {
    //成员变量
    private String name;
    private int age;

    //get/set方法
    public String getName(){
        return name;
    }
    public void setName(String n){
        name=n;
    }

    public int getAge(){
        return age;
    }
    public void setAge(int a){
        age=a;
    }

    public void show(){
        System.out.println(name+","+age);
    }
}

StudentDemo.java

public class StudentDemo {
    public static void main(String[] args) {
        //创建对象
        Student s=new Student();

        //使用set方法给成员变量赋值
        s.setName("林青霞");
        s.setAge(30);

        s.show();

        //使用get方法获取成员变量的值
        System.out.println(s.getName()+","+s.getAge());
        System.out.println(s.getName()+"---"+s.getAge());
    }
}

this关键字

1.this修饰的变量用于指代成员变量

  • 方法的形参如果与成员变量同名,不带this修饰的变量指的是形参。
  • 方法的形参没有与成员变量同名,不带this修饰的变量指的是成员变量。

2.this的作用:

解决局部变量隐藏成员变量。

3.this代表所在类的对象引用。方法被哪个对象引用,this就代表哪个对象。

 

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

public void setAge(int age) {
        this.age = age;
}

封装总结

封装概述

  • 是面向对象三大特征之一(封装, 继承,多态)。
  • 是面向对象编程语言对客观世界的模拟,客观世界里成员变量都是隐藏在对象内部的,外界是无法直接操作的。

封装原则

  • 将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问。
  • 成员变量private,提供对应的getXxx()/setXxx()方法。
     

封装好处

  • 通过方法来控制成员变量的操作,提高了代码的安全性。
  • 把代码用方法进行封装,提高了代码的复用性。
     

2.5构造方法

概述

  • 构造方法是一种特殊的方法。
  • 作用:创建对象。
  • 功能:主要是完成对象数据的初始化。

 注意事项

构造方法的创建

  • 如果没有定义构造方法,系统将给出一个默认无参数构造方法
  • 如果定义了构造方法,系统将不再提供默认的构造方法。

构造方法的重载

  • 方法重载:方法名相同,参数列表不同。
  • 如果自定义了带参构造方法,还要使用无参构造方法,就必须再写一个无参构造方法。

推荐的使用方式

  • 无论是否使用,都手工书写无参构造方法。

2.6标准类制作

Student.java

package com.ydh_07;
/*
    成员变量
        使用private修饰
    构造方法
        无参构造
        带多个参数的有参构造
    成员方法
        提供每一个成员变量对应的setXxx()/getXxx()
        提供一个显示对象信息的show()
*/

public class Student {
    //成员变量
    private String name;
    private int age;

    //构造方法
    public Student(){

    }
    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;
    }
    public void setAge(int age){
        this.age=age;
    }
    public int getAge(){
        return age;
    }
    public void show(){
        System.out.println(name+","+age);
    }
}

StudentDemo.java

package com.ydh_07;
/*
    创建对象并为其成员变量赋值的两种方式
        1.无参构造方法创建对象后使用setXxx()赋值
        2.使用带参构造方法直接创建带有属性值的对象
 */
public class StudentDemo {
    public static void main(String[] args) {
        //无参构造方法创建对象后使用setXxx()赋值
        Student s1=new Student();
        s1.setName("林青霞");
        s1.setAge(30);
        s1.show();

        //使用带参构造方法直接创建带有属性值的对象
        Student s2=new Student("林青霞",30);
        s2.show();
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值