面向对象(OOP)
什么是面向对象
面向对象的思想
- 
物以类聚,分类的思维模式,思考问题首先思考解决问题需要哪些分类,然后对各类分别思考。 
- 
面向对象编程的本质:以类的方式组织代码,以对象的组织(封装)数据
三大特性:
- 
封装 
- 
继承 
- 
多态 
类和对象的关系
- 
类是一种抽象的模版。 
- 
对象是类中的一个实例化后的具体实例。 
例:类:人 对象:乔峰大侠
构造器
注意:
- 
使用new关键字时,本质是在调用构造器。 
- 
有参构造:一旦定义了一个有参构造,无参构造就必须显示定义。 
- 
alt + insert 快速生成构造器。 
package com.paial.demo01;
public class Student {
    String name;
    //无参构造方法
    //如果没有定义构造方法,系统会自动提供一个无参构造方法
    //如果定义了构造方法,系统不会自动提供无参构造方法,需要自行定义
    public Student() {
    }
    
    //有参构造方法
    public Student(String name) {
        this.name = name;
    }
    
    //没有返回类型,也不能写void
}
封装
属性私有,get/set
追求:高内聚,低耦合
private:私有。
get/set:提供一些可以操作这个属性的方法。
package com.paial.Dame02;
/*
1.提高程序的安全性
2.隐藏代码的实现细节
3.统一接口
4.系统可维护性增强  
*/
public class Student {
    
    private String name;
    
    private int age;
    
    //get:获得对象的属性
    public String getName(){
        return name;
    }
    
    //set:设置对象的属性
    public void setName(String name){
        this.name = name;
    }
    //alt + insert 快捷键
}
继承
本质:对某一批类的抽象
关键字:extends
相当于父子关系
子类继承了父类就会拥有父类的全部方法(私有的无法被继承)。
ctrl + h:看类之间的关系
注意:一个子类只能有一个父类(一个儿子只有一个父亲,一个父亲可以有多个儿子)
super注意点
- 
super调用父类的构造方法,必须在构造方法的第一个 
- 
super必须只能出现在子类的方法或者构造方法中 
- 
super和this不能同时调用构造方法! 
与this对比:
- 
代表的对象不同 - 
this:本身调用者的这个对象 
- 
super:代表父类对象的使用 
 
- 
- 
前提: - 
this:没有继承可以使用 
- 
super:只有继承父类后才能使用 
 
- 
- 
构造方法 - 
this():本类的构造 
- 
super():父类的构造 
 
- 
方法的重写
需要有继承关系,子类重写父类的方法!
- 
方法名必须相同 
- 
参数列表必须相同 
- 
修饰符:范围可以扩大但不能缩小:public>protected>default>private 
- 
抛出的异常:范围可以缩小但不能扩大:ClassNorFoundException(小) -> Exception(大) 
即:子类的方法必须和父类必要一致,方法体不同;
为什么需要重写?
- 
父类的功能,子类不一定需要,或者不一定满足! 
- 
Alt + Insert : override; 
package com.paial.Demo03;
public class Person {
    public void print(){
        System.out.println("Person");
    }
}
package com.paial.Demo03;
public class Student extends Person{
    //对父类方法的重写
    
package com.paial.Demo03;
public class Application {
    public static void main(String[] args) {
        Person p = new Student();
        p.print();
    }
}
 
                    
                
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号