面向对象之继承
特点
1.以通用类为基础类,其他类进行继承该基础类
2.java中多继承是不行的,但接口可以。
- 通过关键字 extends 继承
- 继承是将基础类中的所有属性和方法都挪到新的类中
有两个类:
class A{
}
class B{
}
//C继承A
class C extends A{
}
//不可以多继承,这是错误的。
class C extends A,B{
}
super关键字
super与this相似,this指的是当前对象,当然this也可以调用当前类的构造器,
而super指的是当前子类的父类, super();是调用对父类默认构造器。
存在于子类中,隐藏的,不用写出来,其作用是调用父类默认构造器,如果父类构造器是有参数的,那么不写super();就不能调用默认父类构造器。
可以将super(“params”);写出来 通过传递一个参数,调用相应的构造器。
final关键字
1.修饰在变量上,这个变量就不能被修改 final x=18; 则x不能再被修改
2.修饰在属性上,要么直接给初始值,要么在构造器中给初始化,但同时有多个构造器时,这些构造器都需要给final 修饰的属性进行初始化
3.修饰在方法上
final修饰的方法,不能被重写,与修饰在变量上一样 不能被修改。
4.修饰在类上
被final修饰的类不能被继承
抽象类
什么是抽象?
抽象就是 有相同的行为,但具体的表现不能确定。
也就是下方,Student和Worker都有抽烟这个行为,但是具体的表现不同, 一个在厕所抽烟,一个一边搬砖一边抽烟。
/**抽象类*/
abstract class Person{
String name;
int age;
//抽象方法
public abstract void smoke();
}
class Student extends Person{
//复写
public void smoke(){
System.out.println(this.name+"厕所偷偷在抽烟");
}
}
class Worker extends Person{
//复写
public void smoke(){
System.out.println(this.name+"一边搬砖一边抽烟");
}
}
public class AbstractTest{
public static void main(String[] args){
Student s=new Student();
s.name="张学生";
s.smoke();
Worker w=new Worker();
w.name="李员工";
w.smoke();
}
}
关键字 abstract
被关键字abstract修饰的方法,就是抽象方法,。
1.抽象类可以没有抽象方法,但是含有抽象方法的类一定是抽象类,一定要加abstract
2.抽象类不能实例化,(不能创建对象),只能被继承