Java面向对象总结

1、重载(Overload)

方法重载的规则:

  • 同一个类中
  • 方法名称必须相同
  • 参数列表必须不同(个数不同、类型不同、或参数排列顺序不同)
  • 方法的返回类型和访问修饰符可以相同也可以不同
  • 仅仅返回类型不同不足以成为方法的重载

2、重写(Override)

方法重写的规则:

  • 发生在父类和子类之间
  • 同名同参同返回值
  • 方法体不同(super和this)
  • 子类的权限修饰符必须要大于或者等于父类的权限修饰符(public>protected>default>private)

3、构造器

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

作用:
1、new 本质在调用构造方法
2、初始化对象的值

4、创建对象内存分析

在这里插入图片描述
Application类

package oop.demo;

public class Application {
    public static void main(String[] args) {
        Pet dog = new Pet();

        dog.name = "旺财";
        dog.age = 3;
        dog.shout();

        System.out.println(dog.name);
        System.out.println(dog.age);

        Pet cat = new Pet();
    }
}

Pet类

package oop.demo;

public class Pet {
    public String name;
    public int age;

    //无参构造
    public void shout(){
        System.out.println("叫了一声");
    }
}

5、封装、继承、多态

面向对象编程的本质是:以类的方式组织代码,以对象的组织(封装)数据
面对对象的三大特性:封装、继承、多态

1.封装

程序设计要追求“高内聚,低耦合
属性私有,get/set

封装的意义:

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

2.继承

  1. Java中通过extends关键字来实现继承
  2. 子类又被称为派生类; 父类又被称为超类
  3. Java只允许单继承不允许多继承(一个子类继承一个父类)

作用:

  • 继承的出现提高了代码的复用性
  • 继承的出现让类与类之间产生了关系,提供了多态的前提
  • 不要仅为了获取其他类中的某个功能去继承(继承是要有逻辑关系在里面的,不要随意继承)

3.多态

多态存在的条件:

  1. 有继承关系
  2. 子类重写父类的方法
  3. 父类引用指向子类对象
  4. 多态是方法的多态,属性没有多态性

6、==和equals区别

  1. 对于对象来说,特殊的类:如String、File、Date,使用==比较的是对象(对象的地址),equals比较的内容
  2. 除了特殊的类之外的其他普通的类的对象,==和equals比较的都是对象(对象的内存地址)
  3. 如果你想改变某一个类的equals,不想用equals来比较对象的内存地址,就需要重写equals方法

7、final

  1. final修饰的类不能被继承
  2. final修饰的方法不能被子类重写
  3. final修饰的变量是常量,常量必须显示赋值(常量定义名称约定使用大写,如果多个单词组成名称,用_连接;常量只能赋值一次,不能再改变)

8、抽象类

  • 用abstract关键字来修饰一个类时,这个类叫做抽象类,用abstract来修饰一个方法时,该方法叫做抽象方法
  • 含有抽象方法的类必须被声明为抽象类
  • 抽象类不能被实例化,抽象类是用来作为父类被继承的,抽象类的子类必须重写父类的抽象方法,并提供方法体
  • 不能用abstract修饰属性、私有方法、构造器、静态方法、final的方法

9、接口

如果类没有实现接口的所有方法,这个类就要定义成抽象类
如果一个类既继承父类,又实现接口;那么先继承,再实现
定义Java类的语法格式:先写extends,后写implements
接口可以继承接口

public interface Test {
    int ID = 1;//等同public static final int ID = 1;
    void test();//等同public abstract void test();
}

10、异常

子类重写父类的方法时,子类不能抛出比父类方法更大范围的异常

11、IO流

  1. 当字节流中的数据都是字符的时候,使用转换流转换为字符流处理效率更高
  2. 字节流转换字符流的时候,设置的字符集编码要与读取文件的字符集编码相一致,不然就会出现乱码

12、反射

Java能够反射的前提是:已经加载过这个类,就可以通过类名来寻找到这个类的所有相关信息

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值