面向对象编程

面向对象三大特性

  • 封装

  • 继承

  • 多态

构造器

  1. 和类名相同
  2. 没有返回值

作用

  1. new 实际在调用构造器
  2. 初始化对象的值

注意

  1. 定义有参构造器后 想使用无参必须,显示定义

封装

意义:

  1. 提高代码的安全性,保护数据
  2. 隐藏代码细节
  3. 统一接口
  4. 系统可维护性

继承 extends

所有类间接或直接继承Object类

super

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-o2bkmjLj-1617112866159)(C:\Users\WangYuanpeng\AppData\Roaming\Typora\typora-user-images\image-20210330143131950.png)]

super注意点

	 1. super调用父类的构造方法,必须在构造方法的第一个
	 2. super 必须只能出现在子类的方法或者构造方法中!
	 3. super和 this 不能同时调用构造方法!

Vs this:

​ 代表的对象不同:

​ 1. this:本身调用者这个对象

​ 2. super:代表父类对象的应用

前提

​ his: 没哟继承也可以使用

​ super:只能在继承条件才可以使用

构造方法

​ this();本类的构造

​ super():父类的构造!

重写 static 静态

{

//    public class Rewrite8_11 {
//        public static void test(){
//            System.out.println("A_test");
//        }
//
//
//    }


/*
    public class Rewrite8_11_1 extends Rewrite8_11{
        public  static  void test(){
            System.out.println("B->test");
        }

    }*/

    public static void main(String[] args) {
        Rewrite8_11_1 b = new Rewrite8_11_1();
        Rewrite8_11 a = new Rewrite8_11_1();
        a.test();
        b.test();
    }
    //A_test
//    B->test


//    	不加static 
// 		为对象引用
// 		B->test
//    	B->test
   

重写:需要有继承关系,子类重写父类的方法!

​ 1.方法名必须相同

​ 2.参数列表列表必须相同

​ 3.修饰符:范围可以扩大但不能缩小:public>Protected>Default>private

​ 4.抛出的异常:范围,可以被缩小,但不能扩大; ClassNotFoundException -->Exception(大)

重写,子类的方法和父类必要一致;方法体不同!

为什么需要重写:

1.父类的功能,子类不一定需要,或者不一定满足!Alt +Insert ; override;

多态

多态的注意事项

  1. 多态的方法是多态,属性没有多态
  2. 父类和子类有联系
  3. 存在条件 :继承关系,方法需要重写 父类引用指向子类对象 Father f1 = new son();

不是多态的:

  1. static 方法属于类 ,他不属于实例
  2. final 常量
  3. private方法

instanceof

instanceof 关键字用来对比左边的对象是否属于右边的对象

  • instanceof 的左右两边必须是引用类型,java 八大基本数据类型无法使用 instanceof 来进行对比
  • instanceof 用来判定左边的引用类型是否与右边的引用类型的类型是否相同,或左边引用类型是右边引用类型的子类或实现类(右边引用类型可以是类、抽象类、接口)
  • instanceof 的对比结果为 boolean 类型,如果左右两边比对成功,返回 true ;否则返回 flase
  • null 与任何引用类型进行 instanceof 对比的结果都是 flasenull 不属于任何类型,更不属于 object 基类的派生类(子类),需要特别注意

代码演示:

public static <T> boolean isNullOrEmpty(T t){
    if(t == null){
        return true;
    } else if (t instanceof Collection){
        return ((Collection) t).isEmpty();
    } else if (t instanceof Map){
        return ((Map) t).isEmpty();
    } else if (t instanceof CharSequence){
        return ((CharSequence) t).length() == 0;
    }
    return false;
}


/**
  * 判定数字包装类为空或者0
  * @return
  */
public static boolean NumberIsNullOrZero(Number number){
    // 务必进行number的null值判定,因为null与任何类型进行instanceof的结果都是flase
    if(number == null){
        return true;
    } else if(number instanceof Integer){
        return number.intValue() == 0;
    } else if (number instanceof Long){
        return number.longValue() == 0;
    } else if (number instanceof Float){
        return number.floatValue() == 0;
    }else if (number instanceof Double){
        return number.doubleValue() == 0;
    } else if (number instanceof Byte){
        return number.byteValue() == 0;
    } else if (number instanceof Short){
        return number.shortValue() == 0;
    }
    return false;
}

测试代码:

public static void main(String[] args) {
    Integer num = null;
    System.out.println(NumberIsNullOrZero(num));
}

控制台打印:
false
————————————————
版权声明:本文为CSDN博主「菜--菜」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_44309181/article/details/108471772

static

静态代码块 最先执行和类一起

只执行一次

static{

}

抽象类

abstract 关键字

public abstract class Person(){};

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ibNChFHm-1617112866161)(C:\Users\WangYuanpeng\AppData\Roaming\Typora\typora-user-images\image-20210330172325677.png)]

接口 interface

  1. 继承接口关键字 implements

  2. 实现接口的类,就需要重写接口中的方法

  3. 多继承 利用接口实现多继承

作用

  1. 约束

  2. 2.定义一些方法,让不同的人实现~10—>1

    1. public abstract
  3. public static final

  4. 接口不能被实例化,接口中没有构造方法

  5. implements可以实现多个接口

  6. 必须要重写接口中的方法~

内部类

成员内部类

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jczhGKE8-1617112866162)(C:\Users\WangYuanpeng\AppData\Roaming\Typora\typora-user-images\image-20210330215428729.png)]

一个java 只能写一个public class

能写多个class

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值