1.面向对象 oop

1.面向对象 oop

1.面向对象思想

*· 物以类聚,分类的思想模式,思考问题首先会解决问题需要哪些分类,然后对这些分类

进行单独思考.最后.才对某个分类下的细节进行面向过程的思索

*·面向对象适合处理复杂的问题,适合处理需要多人协作的问题

对于描述复杂的事物,为了从宏观上把握,从整体合理分析,我们需要使用面向对象的思路来分析整个系统.但是具体到微观操作,仍然需要面向过程的思路去处理

 

面向对象编程的本质就是:以类的方式组织代码,以对象的组织(封装)数据.

 

抽象

三大特性

*封装

*继承

*多态

从代码运行角度考虑是先有类后有对象. 类是对象的模板.

package 面向对象;
//oop 类
public class oop1 {
   public static void main(String[] args) {
       int  max=max(10,20);
       System.out.println(max);
  }
    /*
    * 修饰符 返回值 方法名(...){
    *   方法体
    * return 返回值;
    * }
    */
   public String  Hello(){
       return "Hello";
  }
   public static int max (int a , int b ) {
       if (a>b){
           return a;
      }   else return b;
  }
}       // void 返回值为空  

1.调用

1.面向对象   oop

 

 

静态方法可以直接调用 类名. 方法名

 

1.非静态

1.面向对象   oop

 

 

 

如果他俩同为 static可以调用

1.面向对象   oop

 

 

 

如果一个是static 一个 不是static 则不可以调用

1.面向对象   oop

 

 

static是和类一起加载的 B 是实例化之后才存在的

2.形参和实参

package 面向对象;
public class oop3 {
   public static void main(String[] args) {
       int sum= (int) sum(20,30);
       //实际参与的数字就是实参
       System.out.println(sum);
  }
   public static double sum (int C , int D) {
       //形式设计的 数值就是形式参数
       return C+D;
  }
}

3.值传递

package 面向对象;
//值传递
public class oop4 {
   public static void main(String[] args) {
         int a = 1;
       System.out.println(a);
       oop4.change(a);
       System.out.println(a);
  }
   public static void change(int a) {
       a =10;
  }
}

4.引用传递**

package 面向对象;
   //引用传递:对象 ,本质还是直传递
public class oop5 {
       public static void main(String[] args) {
           Person person = new Person();
           System.out.println(person.name);//null
           oop5.change(person);
           System.out.println(person.name);//小学生
      }
       public static void change(Person person) {
          person.name ="小学生";
      }
}
//定义一个person类, 有一个属性:name
class Person{
   String name;
}

2.类和对象的关系

1.类是一种抽象的数据类型,它是对某一类事物整体的描述/定义,但是并不能代表某一具体的事物

2.对象是抽象概念的具体实例

能够体现出特点,展现出功能的是具体的实列,而不是一个抽象的概念

 

1.创建与初始化对象

1.使用 new 关键字创建对象

2.使用new关键字创建是时候,除了分配内存空间之外,还会给创建好的对象 进行默认的初始化 以及对类中构造器的调用

3.类中的构造器也称为构造方法,是在进行创建对象的时候必须要调用的.并且构造器有以下两个特点.

1.必须和类的名字相同

2.必须没有返回类型, 也不能写void

package 面向对象;
//一个项目只能处在一个mian方法
public class Application {
   public static void main(String[] args) {
    // 类:抽象的 ,实例化
    // 类实列化后会返回一个自己的对象!
    //student对象就是一个Student类的具体实列
       Student xiaohong = new Student();
       Student xiaoming = new Student();
       //student 他是一个类 不是具体的一个值
       xiaoming.name="小明";
       xiaoming.age=10;
       System.out.println(xiaoming.name);
       System.out.println(xiaoming.age);
  }
}
package 面向对象;
//学生类
public class Student {
   //属性 :字段
   String name;//默认值 null //是一个抽象的概念一个模板
   int age;    //默认值 为0 //是一个抽象的概念一个模板
   //方法
   public void  student(){
       System.out.println(this.name + "学生说话了");

  }
}

1.面向对象   oop

 

 


2.构造器

无参构造

1.面向对象   oop

先走new persion 在走public persion ---- this name ----在返回 给name

有参构造

1.面向对象   oop

new persion 定义了一个name 就走有参构造

Alt+ insert 生成构造器

构造器 :

1.和类名相同

2.没有返回值

作用 :

1.new 本质在调用构造器

2.初始化对象的值

注意点

1.定义有参构造器之后,如果想使用无参构造,显示的定义一个无参的构造

this. 标识这个类

后面this.= 什么 表示传进来的

3.创建对象内存分析

1.面向对象   oop

 

 

1.面向对象   oop

 

 

4.封装

高内聚 低耦合

高内聚:就是类的内部数据作细节自己完成,不允许外部干涉

低耦合:仅暴露少量的方式给外部使用

封装

通常,应禁止直接访问一个对象中数据的实际表示 ,而应通过操作访问,这称为信息隐藏

 

属性私有

get / set

get

1.面向对象   oop

 

 

set

1.面向对象   oop

 

 

 

ALT + insert 只动生成get set 方法

1.面向对象   oop

 

 

封装的意义

1.提高程序的安全性,保护数据

2.隐藏代码的实现细节

3.统一接口

4.增加了系统可维护

package 面向对象;
public class Application {
   public static void main(String[] args){
       Student student = new Student();
         student.getName();
         student.setName("小学生");
       System.out.println(student.getName());
       student.getAge();
       student.setAge(70);
       System.out.println(student.getAge());
  }
}

 

package 面向对象;
//学生类
public class Student {
   //private 属性私有
   private String name;
   private int age;
   private int ID;
   //提供一些 可以操作这个属性的方法
   //提供一些 public 的get . set 方法
   // get 获得这个数据
   public String getName() { //获取值不能用void
       return this.name;
  }
   // set 给这个数据设置值
   public void setName(String name){
       //括号里要有调用的形势参数
       this.name=name;
  }
   public int getAge() {
       return age;
  }
   public void setAge(int age) {
        if (age>120 || age<0){
            System.out.println("年龄不合法");
        }else
       this.age = age;
  }
}

 

上一篇:ADT and OOP 复习总结(一)


下一篇:Python 30 天 ‍ - 第 8 天 - OOP 基础知识