面向对象~

Talk is cheap,show you the code

本文有点长,打开目录食用更佳~


静态与非静态

静态方法 加修饰词 static

在这里插入图片描述

非静态方法

在这里插入图片描述

非静态可以调用静态和非静态,静态不可以调用非静态:

被static修饰的内容会跟随类的加载而加载,所以静态化的内容可以不用实例化就直接调用,同时两个静态方法之间也可以互相调用,

非静态则需要实例化存在以后才可以用。

值传递与引用传递

Java通常为值传递;

引用传递:

public class test7 {
    public static void main(String[] args) {
        Person person = new Person();
        System.out.println(person.name);
        change(person);
        System.out.println(person.name);
    }
    public static void change(Person person){
        person.name="我失恋了";
    }
}
class Person{
    String name;
}

这个操作始终是同一个new出来的name,打印的也是这个name,原值才会变;

对象

这是一个简单的创建对象,从代码层面讲,先有类(作为抽象的模板),再构成对象(作为具体的实例);

左边是创建的类,右边的lzd就是实例化了一个对象。

在这里插入图片描述

构造器(构造方法)

  • 规范:
  1. 与类名相同
  2. 没有返回值(void也不行)
  • 作用:
  1. new的本质是在调用构造方法
  2. 初始化对象的值
  • 注意! 定义有参构造之后,默认无参构造函数会失效,若想使用无参构造,必须要显视的定义一个无参构造!

无参构造:

在这里插入图片描述

有参构造:

在这里插入图片描述

快捷键:alt+insert 可以用来创建构造器

面向对象三大特性

一.封装(对数据的隐藏)

通常,应禁止访问一个对象中的实际数据,而应该通过接口操作。

在这里插入图片描述

属性私有!与public相反 要用private !! 同时访问需要get/set;

同样,alt+insert可以快捷插入get/set。

二.继承

关键字 extends 子,继承父的所有(private私有的东西无法直接被调用)

在这里插入图片描述

super和this

正常调用:

在这里插入图片描述

注意!

  1. super调用父亲的构造方法,必须在构造方法的第一个:

在这里插入图片描述

  1. super只能出现在子类的方法和构造方法中;

  2. super不能和this同时调用构造方法:

    在这里插入图片描述

  • 代表的对象不同:
    1. this代表自己本身这个对象,没有继承也可以用
    2. super代表父类这个对象,且只有在继承条件下才能用
重写(->多态)
  1. 方法名,参数列表必须相同;
  2. 修饰符:范围可以扩大不可缩小:public>protected>default>private;
  3. 抛出的异常:范围可以缩小不可扩大;
  4. 必须是非静态,不可使用static:
  5. 只能由子重写父。

static:

在这里插入图片描述

非静态:
在这里插入图片描述

作用: 父类的功能子类不需要或者不满足 快捷键:alt+insert

三.多态

  1. 多态是方法的多态,属性没有;
  2. 存在条件:必须是继承关系,方法需要重写,父类引用指向子类对象
  3. 父类子类拥有同一个方法时,子类调用是调用子类的方法;如果只有父类有,则继承父类,调用父类方法;
  4. 父类子类拥有同一个方法时,父类调用是调用子类的方法;如果子有父类有,父类无法调用方法:

在这里插入图片描述

(因为 B b=new A(); 本质上b的类型是B,而父类不会继承子类的任何东西)

instanceof

在这里插入图片描述

左边是对象,右边是类,返回类型是Boolean类型。它的具体作用是测试左边的对象是否是右边类或者该类子类创建的实例对象,是则返回true,否则返回false。

抽象类

关键词:abstract

注意:

  1. 不能用new去创建对象,它是用来让子类继承的;
  2. 抽象方法,只有方法的声明,没有方法的实现,要靠子类去实现;
  3. 抽类不一定有抽象方法,但有抽象方法的类一定要声明为抽象类;
  4. 如果子类继承抽象类,那么就必须要实现抽象类没有实现的抽象方法,否则子类也为抽象类。

在这里插入图片描述

接口(关键字:interface)

  1. 只能定义方法,不能实现方法,必须有实现类;
  2. 方法都是public abstract;常量都是public abstract final;
  3. 接口不能实例化;
  4. 可以实现多继承,并且必须重写接口中的方法:

在这里插入图片描述

内部类

  1. 成员内部类:
    在这里插入图片描述

  2. 静态内部类(因为static是静态,代码运行时就已经加载完了,不可以调用非静态)

在这里插入图片描述

  1. 局部内部类:

在这里插入图片描述

  1. 匿名内部类(没有名字初始化类,不会保存实例到变量中)

在这里插入图片描述
看到这里,初步的面向对象也就有了一定的了解~
还是要多手搓代码熟练啊~~

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值