Java最全Java核心编程总结(一、继承),Java并发编程之JMM&volatile详解

最后希望可以帮助到大家!

千千万万要记得:多刷题!!多刷题!!

之前算法是我的硬伤,后面硬啃了好长一段时间才补回来,算法才是程序员的灵魂!!!!

篇幅有限,以下只能截图分享部分的资源!!

(1)多线程(这里以多线程为代表,其实整理了一本JAVA核心架构笔记集)

image

(2)刷的算法题(还有左神的算法笔记)

image

(3)面经+真题解析+对应的相关笔记(很全面)

image

(4)视频学习(部分)

ps:当你觉得学不进或者累了的时候,视频是个不错的选择

在这里,最后只一句话:祝大家offer拿到手软!!

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

}

// 有参数构造器

public Student(String name,int age){

this.name = name;

this.age = age;

}

// 成员方法: setXX \ gerXX

public void setName(String name){

this.name = name;

}

public String getName(){

return name;

}

public void setAge(int age){

this.age = age

}

public int getAge(){

return age;

}

public void show(){

System.out.print;n(name + “…” + age);

}

}

1.2this关键字


  • this关键字可以用在实例方法和构造器中

  • this关键字用在方法中,谁调用这个方法,this就代表谁

  • this关键字用在构造器上,代表了构造器正在初始化那个对象的引用

/*

javaBean类: 封装数据

*/

public class Student {

// 两个成员变量 私有

private String name;

private int age;

// 无参构造器

public Student(){

}

// 有参数构造器中可以用 this 关键字

public Student(String name,int age){

this.name = name;

this.age = age;

}

// 实例方法中可以用 this 关键字

// 成员方法: setXX \ gerXX

public void setName(String name){

this.name = name;

}

public String getName(){

return name;

}

public void setAge(int age){

this.age = age

}

public int getAge(){

return age;

}

public void show(){

System.out.print;n(name + “…” + age);

}

}

1.3static关键字


– 按照有无static修饰,成员变量和方法可以分为

  1. 成员变量

  2. 静态成员变量(类变量)

static修饰的成员变量称为静态成员变量,也叫类变量,属于类本身,直接用类名访问即可

  1. 实例成员变量

static修饰的成员变量称为实例成员变量,属于类的每个对象的,必须用类的对象来访问

  1. 成员方法

  2. 静态方法

static修饰的成员方法称为静态方法,也叫类方法,属于类本身的,直接用类名访问即可

  1. 实例方法

static修饰的成员方法称为实例方法,属于类的每个对象的,必须用类的对象来访问

  1. 成员变量的访问语法

  2. 静态成员变量访问:

  • 类名.静态成员变量

  • 对象.静态成员变量(也可以访问,但是不推荐)

  1. 实例成员变量的访问:
  • 对象.实例成员变量

public class Student {

// 1.静态成员变量: 有static修饰,属于类本身,直接用类名访问即可!

public static String schoolName = “中国”;

// 2.实例成员变量: 无static修饰,属于类的对象,必须用对象访问

private String name;

private int age;

public static void main(String[] args){

// 1.类名.静态成员变量

System.out.println(Student.schoolName);

// 注意:同一个类中访问静态成员变量可以省略类名不写

System.out.println(schoolName);

// 2.对象.实例成员变量

Student s1 = new Student();

s1.name = “孙悟空”;

System.out.println(s1.name);

// 3.对象.静态成员变量(不推荐)

System.out.println(s1.schoolName);

// 静态成员变量属于类,直接用类名访问即可

}

}

1.4继承的概述


  • 继承是子类到父类的一种关系

  • 子类继承了一个父类,子类就可以直接得到父类的属性(成员变量)和行为(方法)了

  • 在java中继承是 “is a” 的关系。Cat extends Animal : 猫是一个动物

  • 在java中,子类是更强大的,子类不仅继承了父类的功能,自己还可以定义自己的功能

格式:

子类 extends 父类 {

}

1.5子类不能继承父类的内容


  • 子类继承父类,子类就得到了父类的属性和行为,但是并非所有父类的属性和行为等子类都可以继承

  • 子类不能继承父类的构造器:子类有自己的构造器(没有争议)

public class ExtendsDemo {

public static void main(String[] args) {

// Cat c = new Cat();

}

class Cat extends Animal{

}

class Animal{

// 父类中的静态成员方法

private void run(){

}

}

1.6继承后成员变量的访问特点


就近原则:子类有就找子类,子类没有找父类,父类没有就报错!

  • this 代表了当前对象的引用,可以用于访问当前子类对象的成员变量

  • super 代表了父类对象的引用,可以用于访问父类中的成员变量

public class TestDemo {

public static void main(String[] args) {

Cat cat = new Cat();

cat.show();

}

}

class Animal{

public String name = “动物名称”;

}

class Cat extends Animal {

public String name = “子类名称”;

public void show() {

String name = “局部名称”;

System.out.println(name); //局部名称

System.out.println(this.name); //子类名称

System.out.println(super.name); //父类名称

}

}

1.7继承后成员方法的访问特点


  • 子类对象优先使用子类已有的方法

1.6继承后方法重写


  • java建议在重写的方法上面加一个@override 注解

  • 方法一旦加了这个@override 注解,那就必须是成功重写父类的方法,否则报错!

方法重写的规范

  1. 子类重写方法的名称和形参列表必须与父类被重写方法一样

  2. 子类重写方法的返回值类型声明要么与父亲一样,要么比父类方法返回值类型范围更小

  3. 子类重写方法的修饰符权限应该与父类被重写方法的修饰符权限相同或者范围更大

  4. 子类重写方法申明抛出的异常应该与父类被重写方法申明抛出的异常一样或者范围更小

小结

  1. 方法重写是子类重写一个与父类申明一样的方法覆盖父类的方法

  2. 方法重写要加@override 注解

  3. 方法重写的核心要求:方法名称,参数列表必须与被重写方法一致!

扩展

  • 静态方法和私有方法是否可以被重写?

答:都不可以,加上@override会报错

1.7继承后构造器特点


  • 子类继承父类,子类的全部构造器默认会先访问父类的无参构造器,再执行子类自己的构造器
  1. 为什么子类的构造器会先调用父类的构造器?

答:1. 子类的构造器的第一行默认有一个super()调用父类的无参构造器,写不写都存在

​ 2.当我们调用子类构造器初始化子类对象数据的时候,必须先调用父类构造器初始化继承自父类的属性和行为(先有爸爸,后有儿子)

1.8this和super


  • this代表了当前对象的引用(继承中指代子类对象)

  • this.子类成员变量

  • this.子类成员方法

  • this(....):可以根据参数匹配访问本类中其他构造器

  • super代表了父类对象的引用(继承中指代了父类对象空间)

  • super.父类成员变量

总结

以上是字节二面的一些问题,面完之后其实挺后悔的,没有提前把各个知识点都复习到位。现在重新好好复习手上的面试大全资料(含JAVA、MySQL、算法、Redis、JVM、架构、中间件、RabbitMQ、设计模式、Spring等),现在起闭关修炼半个月,争取早日上岸!!!

下面给大家分享下我的面试大全资料

  • 第一份是我的后端JAVA面试大全

image.png

后端JAVA面试大全

  • 第二份是MySQL+Redis学习笔记+算法+JVM+JAVA核心知识整理

字节二面拜倒在“数据库”脚下,闭关修炼半个月,我还有机会吗?

MySQL+Redis学习笔记算法+JVM+JAVA核心知识整理

  • 第三份是Spring全家桶资料

字节二面拜倒在“数据库”脚下,闭关修炼半个月,我还有机会吗?

MySQL+Redis学习笔记算法+JVM+JAVA核心知识整理

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

设计模式、Spring等)**,现在起闭关修炼半个月,争取早日上岸!!!

下面给大家分享下我的面试大全资料

  • 第一份是我的后端JAVA面试大全

[外链图片转存中…(img-h4Y9jCLW-1715314406752)]

后端JAVA面试大全

  • 第二份是MySQL+Redis学习笔记+算法+JVM+JAVA核心知识整理

[外链图片转存中…(img-P8u9yF9o-1715314406752)]

MySQL+Redis学习笔记算法+JVM+JAVA核心知识整理

  • 第三份是Spring全家桶资料

[外链图片转存中…(img-j89I6uMs-1715314406752)]

MySQL+Redis学习笔记算法+JVM+JAVA核心知识整理

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值