最后
分享一些系统的面试题,大家可以拿去刷一刷,准备面试涨薪。
这些面试题相对应的技术点:
- JVM
- MySQL
- Mybatis
- MongoDB
- Redis
- Spring
- Spring boot
- Spring cloud
- Kafka
- RabbitMQ
- Nginx
- …
大类就是:
- Java基础
- 数据结构与算法
- 并发编程
- 数据库
- 设计模式
- 微服务
- 消息中间件
🍁内部类把逻辑上相关的类放在一起。而有的内部类不会在其他地方用到,它没有类名,在定义的时候就生成一个该类的实例,称为匿名内部类。匿名内部类是一种特殊的内部类。
- 🍁当然啦!可以把内部类看作外部类的一个成员,它拥有自己的成员变量和成员方法。通过实例化对象可以访问其成员变量或调用成员方法。
🌸把类的定义放在一个用于封装它的类的内部。
- 🍁内部类不能与外部类同名。
- 🍁在封装它的类内部使用内部类与普通类相同,在外部使用要在内部类前加上它所属的外部类的名字。在用new创建内部类时也要在new前加上对象变量。
- 🍁在外部类中,通过一个内部类对象引用内部类中的成员,同样啦!在内部类中也可以直接引用它的外部类的成员,内部类也可以通过创建对象从外部类之外被调用,但必须在内部声明为public。
❓ `原理:`
- 在内部类对象中保存了一个对外部类对象的引用,当在内部类的成员方法中访问某一变量时,如果在该方法和内部类中都没有定义这个变量,调用就会被传递给内部类保存的那个对外部类的引用,通过这个外部类对象的引用去调用这个变量。🍁
//filename:Group.java
public class Group{
private int age;
public class Student{
String name;
public Student(String n,int a){
name=n;
age=a;
}
public void show(){
System.out.print("姓名:"+this.name+"年龄:"+age);
}
}
public void show(){
Student stu=new Student("张三 ",18);
stu.show();
}
public static void main(String[] args){
Group g=new Group();
g.show();
}
}
//姓名:张三 年龄:18
- 🍁在内部内调用外部类的方法也是同样的原理。
- 🍁内部内编译完成后,产生的文件名为:外部类名$内部类名.class。
- 🍁内部类定义为抽象类,需要有其它内部类来继承或者实现。
- 🍁内部类可以声明为protected,private。
- 🍁内部类不能与包含它的外部类名相同。
- 🍁内部类既可以使用外部类的成员变量,也可以使用内部类所在方法的局部变量。
- 🍁内部类不光可以在类中定义,也可以在程序块之中定义。比如在方法中定义内部类,但是只能访问方法中final类型的局部变量。
- 🍁内部类可以声明为static,静态内部类自动转换为顶层类,即它没有父类,而且不能引用外部类成员或其他内部类中的成员,非静态内部类不能声明静态成员,
只有静态内部类才能声明静态成员。
======================================================================
🌸是指可以利用内部类创建没有名字的内部类,进一步声明内部类和创建一个该类的对象。
- 🍁创建匿名类的用意是:补充内部类中没有定义到的方法。
- 🍁匿名内部类直接使用父类的名字或者实现接口的名字。
- 🍁匿名类的定义和实例化对象同时进行。
- 🍁匿名内部类没有名字,所以它的前面不能有访问权限修饰符,也没有构造方法。因为默认构造方法没有参数,所以创建对象时不能带参数。
总结
总体来说,如果你想转行从事程序员的工作,Java开发一定可以作为你的第一选择。但是不管你选择什么编程语言,提升自己的硬件实力才是拿高薪的唯一手段。
如果你以这份学习路线来学习,你会有一个比较系统化的知识网络,也不至于把知识学习得很零散。我个人是完全不建议刚开始就看《Java编程思想》、《Java核心技术》这些书籍,看完你肯定会放弃学习。建议可以看一些视频来学习,当自己能上手再买这些书看又是非常有收获的事了。
54400038)]