目录内容
- 一:面向对象与面向过程讲解
- 二: 什么是面向对象
- 三:回顾方法并加深
- 四:静态方法和非静态方法的调用
- 五:形参和实参
- 六:值传递和引用传递
- 六:类跟对象的关系
- 七:创建与初始化对象
- 八:构造器(重点必须掌握)
- 九:创建对象内存分析
- 十:类和对象总结
- 1 类与对象:类是一个模板 :抽象 对象是一个具体的实例 2 方法 :方法的定义 和调用 3 对象的引用: 引用类型:八大基本类型
- Java对象是通过引用来操作的 :也就是说在栈里面定义一个对象来引用堆里面的东西(栈--->堆) 4 属性:属性可以用字段Field或者成员变量(int String等) 属性默认初始化: 数字:0 0.0 char:u0000 Boolean:false 除了八大类型的引用类型:null 属性的定义: 修饰符 属性类型 属性名 = 属性值! 5 对象的创建和使用 A:必须使用new关键字创建对象 要有含有构造器的类 如 Person xiaoming=new Person(); B:对象的属性:xiaoming.name C:对象的方法:xiaoming.sleep() 6 类: 类中有静态的属性(属性)和动态的行为(方法)
- 十一:什么是封装
- 面向对象三大特性:封装 继承 多态
- 重点:封装记住一句话:属性私有和get/set
- 封装代码的意义: 1 提高代码的安全性 保护数据 2 隐藏代码的实现细节 3 统一接口(统一用get/set方法来使用) 4 提高了系统的可维护性
- 练习
- //属性私有 private String name;//名字 private int age;//年龄 private char sex;//性别 private int id;//学号
- //由于上面的属性都是私有的 //提供一些可以操作这个属性的方法 //get 获取这个数据的方法 public String getName(){ //理解点:return name;和 return this.name; //意思相同 因为在该类中返回name的值(return name) // 的意思就是返回这个类中name的值(return this.name) //return this.name; return name; }
- //set 给这个数据设置值 public void setName(String name){ this.name=name; }
- 重点:给数据设定值定义范围(避免不合法性) public void setAge(int age) { if (age>120||age<0){ this.age=3; }else { this.age = age; } }
- 十二:继承
- 十三:super
- 练习一
- 父子类私有的东西(private)无法被继承
- 练习二
- //调用父类的构造器 必须在子类构造器的第一行 //隐藏代码:调用了父类的无参构造(而且还在第一行)
- 练习三
- 子类(super调用)调用父类 有参构造器和无参构造器讲解(重点和难点)
- 重点: super注意点: 1 子类super调用父类的构造方法,必须在构造方法的第一行 2 super必须只能出现在子类的方法或者构造方法中! 3 super和this不能同时出现在构造方法中(因为他们都要在构造方法的第一行)否则会报错(如下图) 【在本身无参构造中调用自身的有参构造 ( 那么必须在构造方法中的等一 行代码否则会报错 但是在子类的无参构造中调用父类的无参构造super也必须在第一行代码 所以super和this不能同时出现在构造方法中)】 this注意点: 区别:代表的对象不同 this:代表本身调用者这个对象 super:代表父类对象的应用 前提情况下: this:没有继承关系也能使用 super:只能在继承条件下才能使用 构造方法: this();本类的构造! super();父类的构造!
- 难以理解点: 当父类没有无参构造时 子类也就不能存在无参构造(重点)只有一种情况下出现例外!!!(除非在子类的无参构造中调用 父类的有参构造 那么子类的无参构造才可以存在) 如下图代码所示:
- 十四:方法的重写【(重点)多态的基础】
- 练习:
- 重点:重写都是方法的重写 与属性无关
- 重点:重写方法只能重写父类非静态的方法(没有static) 重写跟静态方法没有任何关系 只跟非静态方法有关 (静态方法是在类加载的时候就已经出现)
- 重点:理解:为什么运行结果都是A-->test();结果 因为子类重写了父类
- 重点: 重写总结: 重写:需要有继承关系 就是子类重写父类的方法! 1 方法名必须相同 2 参数列表必须相同 3 修饰符:范围只可以扩大 但不能缩小 例:public>protected>Default>private 4 抛出的异常:范围只可以缩小但不能扩大:例:classNotFoundException-->Exception 重写子类的方法名必须和父类一致 :但是方法体不同!
- 为什么要重写: 1 父类的功能 子类不一定需要 或者不一定满足! 快捷键:alt+insert :override