类别:学生类
-大学生
-中学生
-小学生
语法
-关键字:extends(继承)
-格式:public class 子类名extends 父类名{ }
-关键字:是一门计算机语言的词汇
-标识词: package class interface int(数据类型)
-修饰词:
-访问修饰符权限:public private protected (缺省的)
-static final abstract
-连接词:extends implements
- 逻辑:if else while for do switch case default return break
- 特殊类型:void
- 值:null true false
- 行为词:new
- Object 是所有类的隐式父类
继承:子类 与 父类
-子类继承父类的所有东西
-子类以及子类对象可以调用继承到自己身上
-调用的最终执行场景一定是实例(对象)来调用
-我们应该分开思考:写的过程 代码执行时
-属性和方法都可以被继承到
-实现代码复用,多个子类共同的属性和方法都定义在父类中,所有的子类都复用这一份代码
-访问权限的限制:
-访问权限修饰符的作用:
-规定 类、属性、方法 在项目不同域之间的调用权限
-域:不同的文件 不同的文件夹 不同的类
-类的成员之间的范围也就是代码块的范围
-public——在整个项目中都有(scr lib)
-private——只在整个类的{ }中存在
-protected——在同包下以及不同包下的子类中都存在
-缺省的——同包下都有
-属性变量:不需要初始化
-参数变量:不需要初始化——调用方法是必须穿入对应类型的数据
-局部变量:必须初始化
局部变量关系
-属性变量:
-创建对象时默认初始化赋值为0
-参数变量:
-调用方法时必须穿入对应类型的数据
-局部变量:
-没有机会去修改或者重新赋值
方法重写:
-子类之间大致相同,各自有着各自的特点
-子类可以在自己类中定义自己这一类的属性和方法
-子类之间的行为名必须一致,行为可以不一致
-在父类中把行为定义的抽象一些
-子类可以重写父类的方法然后继续扩展
**语法 **
-子类重写父类的方法,一般要求出方法体之外,都要与父类一直
-最好使用@Override检查重写的方法是否正确
-子类及子类对象会优先调用重写之后的方法
-子类、孙子类 向下时一直继承的,方法全部继承自己上一级的父类
优点
-代码逻辑 差异 结构 可以体验出来
-代码复用
Code
-创建一个父类Student,写下其属性、打印信息的方法、父类read方法,打印输出(可以在同一个类下面写很多个类,⚠️:只有主类可以加public,非主类不得➕public)
public class Student {
String name;
private String pass;
protected int adr;
int id;
public void printInfo(){
System.out.println("姓名:"+name);
System.out.println("密码:"+pass);
System.out.println("地址:"+adr);
System.out.println("ID:"+id);
}
public void read() {
System.out.println("父类:读书了!");
}
}
-子类UNStudent继承父类Student,子类调用父类的read方法,重写父类方法
class UNStudent extends Student {
public void read(){
super.read();
System.out.println("大学生:考试成绩!");
}
}
-子类MidStudent继承它的上一级父类UNStudent,在这里继承的是他的上一级父类,在子类中也可以加上它自己的方法
class MidStudent extends UNStudent{
public void read(){
super.read();
System.out.println("中学生:考试成绩!");
}
public void Text(){
System.out.println("考试");
}
}
-再创建一个类,主方法中分别创建父类、子类对象,分别调用其方法
class Manage {
public static void main(String[] args) {
Student student=new MidStudent();
student.printInfo();
student.read();
UNStudent unStudent=new MidStudent();
unStudent.printInfo();
unStudent.read();
MidStudent midStudent=new MidStudent();
midStudent.printInfo();
midStudent.read();
midStudent.Text();
}
}