Java面向对象//2020.6.25

面向对象


1、什么是面向对象

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

对象,是具体的事物。类,是抽象的,是对对象的抽象。

2、类与对象的关系

类是对某一类事物的整体描述,如猫、狗、人等

对象是是抽象事物的具体实例,比如我家的狗叫小白

3、对象和引用的关系

引用 “指向” 对象
使用类类型、数组类型、接口类型声明出的变量,都可以指向对象,这种变量就是引用类型变量,简称引用。
在程序中,创建出对象后,直接使用并不方便,所以一般会用一个引用类型的变量去接收这个对象,这个就是所说的引用指向对象.
总结:对象和引用的关系,就如电视机和遥控器,风筝和线的关系一样。

构造器


类中的构造器也称为构造方法,是在进行创建对象的时候必须要调用的。

构造器有以下俩个特点:

  1. 必须和类的名字相同
  2. 必须没有返回类型,也不能写void

作用:

  1. 使用new创建对象的时候必须使用类的构造器
  2. 构造器中的代码可以给对象中的属性初始化赋值
public class Person{//Person 类
    
    public Person(){
        //这就是一个无参构造器,一般类中会默认生成
    }
    =======================================
    public Person(String name){
     	//这是一个有参构造器,当类中存在有参构造器时,必须重新定义一个显示的无参构造,否则不能调用
    }
}

其中,有参构造器无参构造器的重载

封装


封装的步骤:

  1. 使用private关键字修饰需要封装的成员变量
  2. 使用get、set方法去读取或修改私有的成员变量,所以get、set方法必须是公开的。
public class Demo{
    private int A;
    	public void setA(int A){
            this.A = A;
        }
    	public int getA(){
            return this.A;
        }
}

封装的作用:

  1. 提高程序的安全性
  2. 隐藏代码细节
  3. 统一调用接口
  4. 便于维护

继承


Java类中只有单继承,没有多继承

public class Father{
	//父类    
}

public class Son extends Father{
    //子类   使用extends关键字继承了父类的属性和方法
}

一个父类可以有多个子类

一个子类只能继承一个父类

其中,父类私有的属性和方法(使用private关键字进行修饰)子类不能继承

子类的构造器会隐式调用父类的无参构造器

Object类是所有类的父类

Super、This关键字


在子类中,使用this表示访问子类中的属性和方法;使用super表示访问父类中的属性和方法

super只能出现在子类的方法或构造器中;如果在构造器中,必须是构造器的第一行代码

使用super调用父类方法后不能再使用this关键字调用方法,因为this也必须在构造器的第一行

方法的重写


子类中重写后的方法和父类完全一致,只有代码部分不同

重写条件:

  1. 只存在于子类和父类之间
  2. 静态方法不能被重写
  3. 父类的私有方法(private关键字修饰)不能重写

重写语法:

  1. 方法名必须相同
  2. 参数列表必须相同
  3. 权限修饰符:子类>父类
  4. 返回值类型:子类<父类
  5. 抛出异常类型:子类<父类

和重载的对比:

  • 方法名必须相同
  • 参数列表必须不同(个数、类型不同均可)
  • 返回值类型可相同可不相同

多态


多态就是一个动态编译的过程,让我们不用知道某个对象的具体类型,就能使用该对象的一些方法

多态是方法的多态,和属性无关

多态存在的条件:

  1. 有继承关系
  2. 子类重写父类方法
  3. 父类引用指向子类对象

父类方法→子类

子类重写方法:调用重写的方法

子类不重写方法:调用子类继承父类的方法

子类中独有方法的调用:只能通过new子类对象的方法来调用

抽象类


abstract声明方法:抽象方法

abstract声明类:抽象类

例子:

public abstract class Demo{
    //这是一个抽象类
}


public abstract void Add();//抽象方法  去掉大括号

抽象类中不一定有抽象方法,但有抽象方法的类一定是抽象类。

抽象类中声明的方法是继承给子类的,抽象类不能通过new来创建对象

有抽象方法→一定是抽象类→继承给子类

子类实现抽象方法:正常类

子类不实现继承来的抽象方法:声明子类为抽象类

抽象类、抽象方法的作用:

起框架作用,可以减少代码

接口


声明接口的关键字:interface

接口可以多继承(继承关键字extends)

接口中的方法都是抽象方法(默认关键字public abstract);接口中的类都是静态变量(默认关键字public static final)

接口的多继承:

public interface A{
    public void A1();
    }
======================
public interface B{
    public void B1();
    }
======================
public interface C extends A,B{
    public void C1();
}

接口的实现:

public class Face implements D,E,F{//D,E,F均为接口   实现关键字implements
    //Face类中要实现接口D,E,F中的所有方法,否则就要被声明为抽象类  因为有抽象方法没实现
}

但是接口不能实现接口

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值