面向对象编程和类

目录

6.面向对象编程

6.1 OO编程思想

6.2面向对象编程思想

6.3类

6.3.1定义

6.3.2 构造方法

6.3.3方法的重载

6.3.4创建对象

6.3.5对象的使用

6.3.6 引用

6.4 this


6.面向对象编程

6.1 OO编程思想

  • 一切来自于现实世界

    世界是由对象组成,对象:一切客观的事物

  • 对象的组成:

    属性 对象有什么

    方法 对象能做什么 行为

    对象之间的关系:

    1)继承关系

    2)关联关系 一个对象成为另一个对象的属性

    3)依赖关系 一个对象调用另一个对象的方法

    面向对象思想

    面对需求,首先找出解决问题的对象,让对象之间建立适当的关系

6.2面向对象编程思想

用计算机中的对象,模拟现实中的对象。

用计算机中类型的概念,对应现实世界中的类的概念

类:对象共性的抽象,人对一类事物的认识。 人(类)-李沁(对象)

 

6.3类

6.3.1定义

属性 :数据存储在变量中

成员变量的特点:

1)成员变量有默认值 在对象创建的过程中,属性会被自动分配到默认值

2)成员变量的作用范围,至少是全类内部

3)成员变量和局部变量可以重名 ,同名时局部变量优先访问

方法 :行为 (能做什么) 函数

方法声明: 修饰符(多个,顺序不重要) 返回值类型 方法名(参数) 抛出的异常

方法实现:{ }

public static void main(String[] args)

6.3.2 构造方法

  • 没有返回值类型

  • 方法名必须和类名相同,包括大小写

  • 不允许手工调用,在对象构造过程中自动调用

  • 如果一个类没有定义任何构造方法,编译器会提供默认公开无参构造

6.3.3方法的重载

Overload:在一个类中,可以定义多个同名的方法,方法名相同,参数表不同

1)对于修饰符 返回值类型 方法名 抛出的异常 无要求

2)参数表不同:参数个数不同,参数类型不同,参数类型排列不同

如果只有参数名不同,不算重载

3)编译器根据实参类型,选择重载方法调用

重载的作用:一个类的统一行为,由于参数不同造成的实现的差异,对对象的调用者屏蔽

例如我们有一个人的类,类里有吃的方法,根据方法的重载传不同的食物对应不同的吃法。

6.3.4创建对象

new 类名 ( 构造参数 调用构造方法的实参);
new Student();

6.3.5对象的使用

 

 Solution solution = new Solution();
  solution.name        solution.属性
  solution.eat()     solution.方法名()
package day03;
​
/**
 * @author 小白孙佳遥 想杨屎郡了
 */
​
public class text1 {
    public static void main(String[] args) {
        Student s = new Student("yjj",20);
        System.out.println(s.name+" "+s.age);
        s.study();
    }
​
}
class Student{
    String name;
    int age;
  public Student(){};
  public Student(String n,int a){
      name = n;
      age = a;
  }
public void study(){
    System.out.println("Student study");
    }
}
​

6.3.6 引用

  • 8种基本类型的变量 简单变量 存在栈中,存值

  • 引用类型(对象,数组…) 存 在栈中的是地址,对象存在堆中

局部变量 vs 成员变量 看定义位置

  • 局部变量:存在栈空间,函数内部定义

  • 成员变量:存在堆空间,函数外部定义

简单变量 vs 引用 看变量类型

简单类型:8种基本类型 存值 作为函数的参数时,实参和形参值是相同的

引用:不是8种基本类型 存地址 作为函数的参数时,实参和形参地址相同,指向同一个对象

package day03;
​
/**
 * @author 小白sjy
 */
public class text2 {
    public static void main(String[] args) {
        int a = 10;
        int b = a;
        b++;
        System.out.println(a);//10
        MyClass mc1 = new MyClass();
        MyClass mc2 = mc1;// 把mc1的内容赋值到mc2
        mc2.value++;//mc2和mc1指向的地址相同 value = 20; 此时mc2的值增加后,mc1耶相应增加
        System.out.println(mc1.value);//21
    }
}
 class MyClass{
    int value = 20;
}

 

6.4 this

关键字,是特殊的引用 代表对象自身 当前对象

this.属性/方法 代表调用当前对象的属性/方法

  • 可写可不写

  • 必须写的时候:局部变量与成员变量同名的时候,并且想访问成员变量

    this() 调用本类其他的构造方法 ;必须是构造方法的第一条语句

package day03;
​
/**
 * @author 小白孙佳遥 想杨屎郡了
 */
public class text3 {
    public static void main(String[] args) {
        System.out.println("测试手机类");
        Iphone iphone = new Iphone();
        iphone.call("杨屎郡");
        System.out.println(iphone.model);
        System.out.println(iphone.brand);
        System.out.println("================");
        System.out.println("学生类");
        Stuent stu = new Stuent();
        stu.name=("yjj");
        System.out.println(stu.name);
        stu.age=20;
        System.out.println(stu.age);
        stu.setAge(50);
        System.out.println(stu.getAge());
​
​
    }
}
class Iphone{
    String brand;
    String model="opponeo5";
public void call(String name){
    System.out.println("给"+name+"打电话");
​
}
}
class Stuent{
    String name;
    int age=10;
    public Stuent(){}
    public Stuent(int age){
        this.age=age;
    }
    public void setAge(int age){
//        此处可以写对age的限定
        if(age >200 ||age<0){
            System.out.println("你年龄给的毛啊");
            this.age = 250;
        }else{  this.age = age;}
​
    }
    public int getAge(){
        return age;
    }
}

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值