面向对象
面向对象特性
封装
利用抽象数据类型将数据和基于数据的操作封装在一起,使其构成一个不可分隔的独立实体,数据被保护在抽象数据类型的内部,尽可能的隐藏内部的细节,只保留一些对外的接口,用户无需对对象的内部了解过多,但是可以通过对象提供的接口来访问对象。
优点 \color{#FF00FF}{优点} 优点
- 减少耦合:独立开发,测试,优化,理解和修改
- 减轻维护的负担:可以更加容易被程序员理解,并且在调试的时候可以不影响其他的模块
- 提高软件的重用性
- 降低来构建大型系统的风险:即使整个系统不可用,但是其他的模块是可以使用的
下面People
类封装name
、age
、sex
等属性,外界只能通过get()方法获取其相关对象的属性,但是相应的其中wealth
属性是无法获取的,但是这个属性是可以通过owner
来获取的
package com.Jragon.Base.object;
/**
* Created by jdx on 2023/5/18 下午12:05
*/
public class People {
private String name;
private int wealth;
private int age;
private int sex;
public String getName() {
return name;
}
public int getAge() {
return age;
}
public String getSex() {
return sex == 0 ? "man" : "woman";
}
public void owner() {
if (18 <= wealth && wealth <= 28) {
System.out.println("You who have youth are the richest!!!");
} else {
System.out.println("Don't waste your time in vain!!!");
}
}
}
继承
继承体现了 IS-A
的关系,例如 Dog
和 Animal
就是一种 IS-A
的关系,因此Cat
可以继承 Animal
,从而获得 Animal
的对应属性。注意:继承应该遵循里式替换原则,子类对象必须能够替换掉所有的父类对象。
对于父类引用子类对象称为向上转型的深入理解
Dog
可以当做 Animal 来使用,也就是说可以使用 Animal
引用 Dog
对象。父类引用指向子类对象称为 向上转型 。
Animal animal = new Dog();
多态
多态运行时有三个条件:
- 继承
- 重写
- 向上转型
计算类
- 4*0.1 == 0.4 将会返回true or false
- false,因为有一些浮点数并不能精确的反馈出来
- a=a+b和a+=b的区别
- +=隐式的将操作结果先进行类型准换,然后在对结果进行计算,这是区别于a=a+b的根本
基本面试相关问题
1、对equals()和hashCode()的理解
- 在重写equals方法的时候需要重写hashCode()方法,原因就是有强制规范,在此过程中需要注意不同的对象可能会有相同的hashCode但是相同的对象就一定不会有相同的HashCode 这是强制规范所定
2、String、StringBuffer和StringBuilder的区别
- 从适用范围角度来看,String对象是不可变的,但是StringBuffer和StringBuilder是可变字符串操作,对于String来说,他是final修饰的、每次对对象的操作都会生成一个新的对象,但是对于另外俩个来说他们本身是对对象进行操作,所以在对字符进行频繁操作的时候可以考虑抛弃String防止对系统性能进行产生影响
- 从线程安全角度来说:StringBuilder回更快但是这就意味着他的安全性能比较低,因为从线程安全角度来看确实如此
3、this()&super()在构造方法中的区别文章来源:https://www.toymoban.com/news/detail-449638.html
- 本质来说this是指向对象的指针(假想),super就是一个关键字
- 调用super方法来说,必须将super放在第一行否则idea将会飙红,象征编译不通过
- this和super不能在同一个构造器中
- 适用以上this和super方法时,不可用在static环境中
4、接口和抽象类的区别文章来源地址https://www.toymoban.com/news/detail-449638.html
- 抽象类中可以有构造方法,接口没有构造方法(java8以后接口也是可以有构造方法的【default 关键字】)
- 抽象类中可以有普通成员变量,接口没有普通成员变量
- 一个子类可以智能继承一个抽象类,但是可以实现多个接口
到了这里,关于JAVA面试-语法基础- A01的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!