华清远见重庆分公司—面向对象—个人总结

1、两种编程思想

面向过程(pop)

是一种将事件按流程逐步完成的基本编程思想,强调过程,逻辑清晰,侧重与分析完成事件的过程

面向对象(oop)

当前主流的编程思想,创建解决问题的对象,并赋予对象对应的属性和方法,侧重如何创建解决问题的对象

2、对象和类

类Class,可以理解为模板,具有相同属性和方法的对象集合

```java
/**
 * 定义一个car类
 * 属性:变量
 * 品牌
 * 颜色
 * 行为:方法
 * 行驶
 * 停止
 * 娱乐
 */

public class Car {
    //属性
    String brand;
    String color;
    int seat;
    //行为
    void go(){
        System.out.println("go");
    }
    void stop(){
        System.out.println("stop");
    }
    void happy(){
        System.out.println("happy");
    }


}
```

对象,是类的一个实例,类的具体表现

创建对象

(无参构造)

类名 对象名 = new 构造方法();

(有参构造)

类名 对象名 = new 构造方法(值1,值2....);

创建的对象,通过”.“访问类中的非私有(没有被private修饰)的属性以及方法

创建对象时,用有参还是无参方法,取决于类的构造方法

3、构造方法

构造方法是一个特殊的方法,没有返回值,方法名和类名一致,

每一个类在定义时,都有一个默认的隐藏的无参数的构造方法,在创建对象时调用

构造方法通常用于初始化成员变量

public class Test{
String name;
int age;
String sex;
//这就是无参数的构造方法,默认就会存在,不过是隐藏的
public Test(){//方法体
}
//这就是有参数的构造方法
public Test(String name,int age,String sex){
    this.name=name;
    this.age=age;
    this.sex=sex;
}
}

构造方法的注意点:

  • 构造方法没有返回值,但也不是void,且构造方法名必须与类名相同
  • 每一个类在创建成功之后都有一个默认的无参构造方法,只是被隐藏了
  • 如果一个类中写了有参构造的方法,那么默认的无参构造就会消失,也就是说在main()方法中用无参的方法new一个对象将会报错,我们此时需要把无参的构造方法写出来,方可解决问题
  • 构造方法不能通过"."操作符访问,只能通过new关键字创建对象自动调用,用于初始化成员变量

4、面向对象的三大特性

封装

将类中的属性使用 private 修饰,这样就能防止非当前类对其访问。
封装的步骤:
        1.给类中的所有属性添加 private 访问修饰符
        2.给每个属性添加 getXXX() 方法用于读取属性值
        3.给每个属性添加 setXXX() 方法用于给属性赋值

继承

A extend B 。类 A 就是类 B 的子类,类 A 的对象就能直接访问类 B 中非私有成员。
或接口 A extends 接口 B
重写:子类对父类非私有的方法进行拓展
  • 重写的方法必须满足方法名,返回值,参数列表都相同
  • 子类重写的方法的访问权限,必须比父类更放宽(也就是如果父类没有写访问权限,子类必须为public或者protected 或者不写,同样的如果父类是public那么子类必须为public)

修饰符的权限关系:

  • 子类抛出的异常必须小于父类

 重载

在一个类中,某个方法在不同的参数下,表现不同的行为。简单理解就是同名不同参。
注意不同参指的是参数的数量,参数类型,或者相同参数数量,相同参数类型但是放的位置不同也叫不同参
thissuper
都可以当作对象或构造对象使用
1、当作对象:
  • this表示当前类的对象;super表示当前类的父类对象
  • 只能在非静态方法中,this和super才能当作对象使用

2、当作构造方法

  • this() 表示当前类的无参数构造方法,如果带参数就表示对应参数的构造方法。
  • super()表示当前类的父类的无参数构造方法,如果带参数就表示对应参数的构造方法。
  • this()或 super() 只能用在另一个构造方法的首行。
在继承关系中,如果父类和子类都没有写出来任何构造方法时,子类有一个隐藏的无参数构造方法,会自动调用父类中无参数的构造方法。
class Father{

}
class Son extends Father{
/*
这个构造方法是隐藏的
*/
    public Son(){
        //在构造方法的首行
        super();
    }
}
如果父类中有带参数的构造方法,没有无参数的构造方法时,子类必须要调用父类中的构造方法。
class Father{
    String name;
    public Father(String name){
        this.name=name;
        }
}
class Son extends Father{
    public Son(){
        super("xxx");
    }
}
Object 是所有类的父类。任何类都间接地继承了该类,但没有明确地使用extends 体现出来。所有类都可以访问Object类中的方法,或对其进行重写。toString() 就是 Object 类中的一个方法,在输出对象时自动调用。

多态

在继承关系中,子类的对象可以保存到父类的变量中。
多态通常应用于定义方法时,形参为一个父类或接口类型变量,实参可以是子类对象。

父类/父接口 对象 = new 子类();
public class Father{
    public void smoke(){
        System.out.println("father smoking");
    }
}



public class Son extends Father{
    public void play(){
        System.out.println("son playing");
    }
    @Override
    public void smoke(){
        System.out.println("son smoking");
    }    
}



public class Main(){
    public static void main(String[] args){
    Father f = new Father();
    f.smoke();//父类中的方法
    Son son = new Son();
    son.play();
    son.smoke();//调用的是重写后的方法
    //多态
    Father father = new Son();
    //father.play();无法调用
    father.smoke();//调用的是重写后的方法
    }
}

5、关键字

interface(接口)
用于定义接口的关键字。代替 class
如果某个抽象类中全都是抽象方法时,可以将这个类改为接口。
  • 接口是一个完全抽象类,其中的方法都是public abstract修饰的抽象方法,没有方法体,其中的属
  • 性都是public final static修饰的静态常量。
  • 接口中没有构造方法,不能创建对象。
  • 接口通过implements实现,实现它的类称为该接口的实现类。
  • 一个类可以同时实现多个接口。
  • 一个类实现了接口后,必须重写其中的抽象方法。
  • JDK1.8后,可以在接口中定义default方法和static方法,该方法不用重写。

static(静态)

可以修饰方法、属性或代码块。被修饰的内容称为静态成员。
当某个属性或方法被高度重用时,可以将其定义为静态的,之后通过类名调用。
  • 静态方法中无法使用非静态成员
  • 普通方法中可以使用静态成员

abstract(抽象)
可以修饰方法(没有方法),也可以修饰类,有抽象方法的类一定是抽象类 ,但抽象类中不一定必须有抽象方法
  • 抽象类中有构造方法,但该构造方法只会在new抽象类的子类对象时会自动调用,抽象类不能创建自身对象。
  • 抽象类通常需要被继承,一旦有子类继承了抽象类,就必须要重写抽象类中的所有抽象方法。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值