// }
// 不能赋值与方法,应为能调用方法时,对象已经创建完毕,里面属性必须有值了
}
* final修饰局部变量
+ final修饰形参后,表明是一个常量
+ 在方法体内部,只能调用不能再重新赋值
5. static和final用来修饰属性,表明是一个全局常量
## abstract抽象类
1. abstract可以修饰的结构:类和方法
2. abstract修饰的类:抽象类
1. 此类不能实例化
2. 抽象类中一定有构造器,便于子类实例化时调用
3. 提供抽象类的子类,让子类对象实例化,完成相关的操作
3. abstract修饰的方法:抽象方法
1. 抽象方法只有方法的声明,没有方法体
2. 包含抽象方法的类,一定是一个抽象类(因为抽象方法不能外部调用)
3. 当子类重写了父类所有抽象方法后,方可实例化
4. 若子类没重写,那么子类也应该用abstract修饰成抽象类
public class AbstractTest {
public static void main(String[] args) {
// Person p1=new Person(); 抽象类就不能实例化了
// p1.eat();
Student s1=new Student(“jack”);
System.out.println(s1.name);
s1.walk();
}
}
abstract class Person{
String name;
public Person(String name){
this.name= name;
}
public void eat(){
System.out.println(“吃饭”);
}
public abstract void walk(); // 抽象方法
}
class Student extends Person{
public Student(String name){
super(name);
}
public void walk(){ // 必须重写父类中的抽象方法
System.out.println(“学生走路”);
}
}
4. 使用abstract注意
1. abstract不能修饰构造器,属性
2. abstract不能有私有方法,静态方法,final的方法和属性
5. 匿名类
public class AbstractTest2 {
public static void main(String[] args) {
method(new Student()); // 匿名对象
Person p1=new Person() { // 创建了匿名子类对象
@Override
public void walk() {
System.out.println(“匿名重写子类”);
}
};
method(p1);
}
public static void method(Person s){
s.walk();
}
}
## 模板方法设计模式
1. 在软件开发中,整体步骤是固定的,通用的,这些就可以在父类中写好。而对于那些异变的,可以抽象出来在子类中实现
2. 实例:
public class TemplateTest {
public static void main(String[] args) {
subTemplate sub1=new subTemplate();
sub1.code();
sub1.spendTime();
}
}
abstract class Template{
// 计算某段代码执行所需时间
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**