从去年四月份入职,复盘这一年,技术提升基本停滞,完全淹没在无穷无尽的业务和改之不尽的bug中。重新制定学习计划,需首先对java基础进行梳理,预计在四月底完成,每周梳理一次。以前感觉时间对自己来说是不那么具象的东西,现在深深领悟到了白驹过隙。保持对技术的好奇,加油,小菜鸟。
类
类是java代码的基石,一个类应包含五个部分:
1、成员变量
2、成员方法
3、构造器:默认存在无参构造,当使用有参构造时,会默认覆盖无参构造,这是一个很有意思的机制
4、代码块:表达出你想做什么
5、内部类
封装
顾名思义,将东西封存装订起来,但特定的方法外露,让其他代码块可以顺利的进行调用。
封装具有的两个功能:
(1)可以提高安全性:防止其他模块调用对应的方法产生的错误影响后续的功能;
(2)组件化:外露需要的方法,当不需要时不进行暴露——即就是所谓的合理暴露
private String userName;
private int age;
//类成员方法
public static int sex = 1;
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
在日常使用中,最经典的就是对象类的创建,属性私有化,对属性的操作方法进行共有化的处理
继承
1、继承是java代码很有意思的一个点,继承的规则有:
(1)单继承:即一个类只能单独的继承另外一个类,换种表达形式,一个子类只能有一个父类;
(2)多层继承:即子类有对应的父类,该父类也有自己对应的唯一的父类;
(3)继承局限性:私有方法和静态方法不能被重写——已获取,不能重写!
(4)任何类追根溯源都会有一个祖宗类Object.class
注:当子类方法重写父类的方法时,添加@Override的注解,既是标注,也是方法调用的入口
2、this和super关键字的使用:this代表的是使用当前对象的方法,super代表的是使用父类的对象
public class Children extends People {
public String play = "pop";
public void read() {
String play = "sing";
System.out.println("i like " + super.play);
System.out.println("i like " + play);
System.out.println("i like " + this.play);
}
//当注掉this和super时,输出的一定是sing,这块体现的是就近原则
public static void main(String[] args) {
Children children = new Children();
children.read();
}
}
抽象
抽象类可以理解为对方法进行抽象的一种模板化工具方法,但无法根据抽象类创建具体的对象,抽象类除过不能创建对象,其它类有的,抽象类仍然具有,
抽象类的调用规则:
(1)当一个类继承抽象类时,必须重写抽象类的抽象方法;—— 当然,重写就意味着需要添加@Override的注解
—— 当一个类继承抽象类,却不想实现抽象类的所有方法的同时,那么这个类也只能作为抽象类 去存在
(2)抽象类中的方法不会有代码块,即无具体的逻辑执行;—— 有种规范的感觉
public class Abstract_two {
}
abstract class father{
public abstract void run();
public abstract void eat();
public void test(){
System.out.println(123);
}
public static void test111(){
System.out.println(123);
}
}
class boy extends father{
@Override
public void run() {
}
@Override
public void eat() {
}
}
abstract class girl extends father{}