Java-面向对象(更新迭代中)

1.面向对象介绍

面向: 拿,找

对象: 能干活的东西

因此,所谓---面向对象编程: 拿东西过来做对应的事情

2.设计对象并使用

(1)类和对象

用人话说就是: ●类(设计图)---是对象共同特征的描述  ●对象---是真实存在的具体东西

//定义一个类---(比如我们现在定义学生)
public class student {
    
    //属性(成员变量)---(学生的一些信息)
    String name; //名字
    double height; //身高
    int age; //年龄
    
    //行为(方法)---(学生可以做的一些事情)
    public void study() {
        System.out.println("学习");
    }
    
    public void fall_in_love() {
        System.out.println("谈恋爱");
    }
}
​
public class Main {

    public static void main(String[] args) {

       //创建一个对象---(因为上面我们已经定义了学生这种类,因此现在可以创建一个具体的对象)
       student s = new student();  //格式:  类名 对象名 = new 类名();

       //使用一个对象---(我们现在就可以访问这个对象的属性与行为)
       s.name = "彭于晏";
       s.height = 180.0;    //访问属性的格式:   对象名.成员变量
       s.age = 18;

       s.study();           //访问行为的格式:   对象名.方法(...);
       s.fall_in_love();
    }
}

​

​

(2)类的几个补充注意事项

●用来描述一类事物的类,专业叫做: JavaBean类  (在Javabean类中是不写main方法的)

●在以前我们编写main方法的类,叫做测试类,我们可以在测试类中创建Javabean类的对象                并进行赋值调用

●成员变量的完整定义格式为:  修饰符  数据类型  变量名 = 初始化值;一般无需指定初始化              值,存在默认值(0 / 0.0 / false / null)    (这个修饰符下面会讲到)

3.封装

(1)什么是封装

●告诉我们,如何正确设计对象的属性和方法

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

(2)理解封装思想的好处

●让编程变得很简单,有什么事,找对象,调方法就行

●降低学习成本,不用记对象有哪些方法,有需要去找就行

(3)private关键字

●是一个权限修饰符(修饰符它来了)

●可以修饰成员(成员变量和方法)

●被private修饰的成员只能在本类中才能访问

​public class Student {

    private int age;
    //为什么要用private修饰成员呢?
    //因为如果不修饰,在测试类中就可以对其赋值了,但如果赋的值及其离谱咋办
    //这个private修饰符就是为了避免这样
    //但有了private又该如何赋值呢?就要用到set方法和get方法了

    //set(赋值)
    public void setAge(int a) {
        if (a >= 18 && a <= 22) {
            age = a;
        } else {
            System.out.println("数据离谱!!!");
        }
    }

    //get(获取)
    public int getAge() {
        return age;
    }
}

​
​
public class Main {

    public static void main(String[] args) {

        Student s = new Student();

        s.setAge(19);//赋值

        int age = s.getAge();//获取

        System.out.println(age);//打印结果 19
    }
}

​

4.this关键字

​public class Student {

    private int age = 20; //成员变量
   
    public void one () {
        
        int age = 10; //局部变量
        
        System.out.println(age);//会打印多少呢?  10  为什么?(就近原则!!!)
        System.out.println(this.age);//会打印多少呢?  20  为什么?(this关键字的作用)
    }
}

​

5.构造方法

(1)构造方法的作用: 

创建对象的时候,由虚拟自动调用,给成员变量进行初始化的

(2)构造方法有几种,各自作用:

●无参数构造方法: 初始化对象时,成员变量的数据均采用默认值

●带所有参数构造方法: 初始化对象的同时可以为对象进行赋值

(3)构造方法有哪些注意事项?

●任何类定义出来,默认就自带了无参数构造方法,写不写都有

●一旦定义了有参数构造方法,无参数构造方法就没有了,此时需要自己写无参数构造方法了

●  建议在任何时候都手动写上空参和带全部参数的构造方法

public class Student {

    private int age;
    private String name;
    private double height;

    public Student() {
        //空参构造方法
    }

    public Student(int age,String name,double height) {
        this.age = age;
        this.name = name;
        this.height = height;
        //带全部参数的构造方法
    }
}

​
​public class Main {

    public static void main(String[] args) {

        Student s = new Student(18, "彭于晏", 180.0);
        //创建对象的时候,由虚拟自动调用,给成员变量进行初始化的

    }
}

​

注意: 我们前面好像学了set这个方法就是赋值用的吧,那是不是现在学了构造方法,可以在创建对象的同时就给成员变量赋值了,是不是就说明set没用了呢?其实不然,如果我们要通过键盘输入一个值来赋给成员变量的时候该怎么办呢?很显然,就要用到我们的set了,因为构造方法是在创建对象的同时直接赋值的,与通过键盘输入的形式赋值是完全不符的

6.标准JavaBean

7.对象内存图

这个看网课比较好(P87~89)

8.补充:成员变量与局部变量

区别成员变量局部变量
类中位置不同类中,方法外方法内,方法申明上(形参)
初始化值不同有默认初始化值没有,使用之前要先赋值
内存位置不同堆内存栈内存
生命周期不同随着对象的创建而存在,随着对象的消失而消失随着方法的调用而存在,随着方法的运行结束而消失
作用域整个类中有效当前方法中有效

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值