Java基础知识-类和对象

1.类和对象的区别

类是对象的抽象,对象是类的具体实例。
类是抽象的,不占用内存,而对象是具体的,占有内存空间。
例如:类就是水果,对象就是苹果。

2.重写和重载的区别

重写(Override)
重写是子类对父类的允许访问的方法的实现过程进行重新编写,返回值和形参都不能变。即外壳不变,核心重写。
重写的好处在于子类可以根据需要,定义特定于自己的行为,也就是说子类能够根据需要实现父类方法。
重写方法不能抛出新的检查异常或者比重写方法申明更加宽泛的异常。

class Animal{
    public void move(){
        System.out.println("动物可以移动");
    }
}

class Dog extends Animal{
    public void move(){
        System.out.println("狗可以跑和走");
    }
}

public class TestDog {
    public static void main(String[] args){
        Animal a = new Animal();            //Animal对象
        Animal b = new Dog();               //Dog对象

        a.move();                           //执行Animal类的方法
        b.move();                           //执行Dog类的方法
    }
}

在这里插入图片描述
尽管b属于Animal类型,但是它运行的是Dog类的move方法,这是由于在编译阶段,只是检查参数的引用类型。
然而在运行时,Java虚拟机(JVM)指定对象类型并且运行该对象的方法。上面的例子中,之所以能编译成功,是因为Animal类中存在move方法,然而运行时,运行的是特定对象的方法。

class Animal{
    public void move(){
        System.out.println("动物可以移动");
    }
}

class Dog extends Animal{
    public void move(){
        System.out.println("狗可以跑和走");
    }

    public void bark(){
        System.out.println("狗可以吠叫");
    }
}

public class TestDog {
    public static void main(String[] args){
        Animal a = new Animal();            //Animal对象
        Animal b = new Dog();               //Dog对象

        a.move();                           //执行Animal类的方法
        b.move();                           //执行Dog类的方法
        b.bark();							//编译不通过
    }
}

b.bark()编译不通过,因为b的引用类型Animal没有bark方法。
方法重写的规则
1.参数列表必须完全与被重写方法相同。
2.返回类型与被重写方法的返回类型可以不同,但是必须是父类返回值的派生类(java5及更早版本返回类型要相同,java7及更高版本可以不同)
3.访问权限不能比父类中被重写的方法返回值低,如果父类是public,则子类重写方法就不能声明为protected。
4.父类的成员方法只能被它的子类重写。
5.声明final的方法不能被重写
6.声明static的方法不能被重写,但能够被再次声明。
7.重写的方法能够抛出任何非强制异常,无论被重写的方法是否抛出异常。但是重写的方法不能抛出新的强制异常,或者比重写方法声明的更广泛的强制性异常,反之则可以。
8.构造方法不能被重写。
9.如果不能继承一个方法,则不能重写这个方法。

当需要在子类中调用父类的被重写方法,需要使用super关键字

重载(Overload)
重载就是一个类里面,方法名字相同,而参数不同。返回类型相同也可以不同。
最常用的地方就是构造器的重载。
重载规则
1.被重载的方法必须改变参数列表(参数个数或类型不一样)
2.被重载的方法可以改变返回类型。
3.被重载的方法可以改变访问修饰符。
4.被重载的方法可以声明新的或更广的检查异常。
5.方法能够在同一个类中或者一个子类中被重载。
6.无法以返回值类型作为重载函数的区分标准。
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是JAVA面试基础知识的分及详细知识点: 1. Java基础知识 - 数据型:基本数据型和引用数据型 - 变量、常量和关键字 - 运算符:算术运算符、比较运算符、逻辑运算符、位运算符、三目运算符 - 流程控制语句:if-else语句、switch语句、for循环、while循环、do-while循环、break语句、continue语句 - 数组:一维数组和二维数组 - 方法:方法的定义、方法的参数、方法的返回值、方法的重载 - 类和对象的定义、对象的创建、构造方法、成员变量和成员方法、静态变量和静态方法、封装、继承、多态 - 接口和抽象:接口的定义、接口的实现、抽象的定义、抽象继承 - 异常处理机制:异常的定义、异常的分、try-catch语句、finally语句、throw语句、throws语句 2. Java高级知识 - 反射机制:Class、Constructor、Method、Field、动态代理 - 泛型:泛型的定义、泛型、泛型接口、泛型方法、泛型通配符、型擦除 - 多线程:线程的创建、线程的状态、线程的同步、线程的通信、线程池、锁、死锁、并发包 - IO流:字节流和字符流、文件读取和文件写入、序列化和反序列化、缓冲流、转换流、管道流、NIO - 注解:注解的定义、注解的分、元注解、自定义注解、注解的使用 - Lambda表达式:Lambda表达式的定义、语法、函数式接口、方法引用、构造方法引用 - Stream API:Stream的定义、Stream的中间操作和终止操作、并行流、收集器 - 设计模式:单例模式、工厂模式、抽象工厂模式、建造者模式、代理模式、适配器模式、装饰者模式、观察者模式、模板方法模式、策略模式、状态模式、责任链模式、享元模式 以上就是Java面试基础知识的分及详细知识点,希望能对您有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值