super关键字
–1.概述
super 表示父类对象的一个引用
在子类中用,用来调用父类的功能
和this一样,如果出现在了构造方法中,必须是第一条语
this super 不能在成员位置使用;
this与super只能在非静态的方法里使用;调用构造函数时必须在一行代码
继承
方法重写
1OverRide 发生在父子类的关系
子类继承父类后,可以使用父类的所有功能,如果想改–方法重写
语法要求:要有足够的权限(子类的权限要>=父类原来的权限)
子类的方法签名/声明 必须和父类一样
访问权限:public >protected>default>private
static
可以修饰成员变量,成员方法
随着类的加载而加载,优先于对象加载
全局唯一,全局共享
可以直接被类名调用
静态调用静态时要直接调用,new对象调用时会警告。非静态可以随意调用
static修饰的方法中不能出现this,super
static的资源,可以通过对象访问(不推荐),类名访问
静代码块
–1.概述
也拥有static关键字的所有特点
静态代码块 在 成员位置 用来初始化项目,类加载时触发
final 可以修饰类、方法、成员变量
用来约束父类的资源重写权限, 只能继承不能改
fianl 修饰类不可被继承、方法不可重写、变量变常量;
多态 :继承、重写
父类引用子类对象
父类 引用变量 =new 子类();小到大 向上 转型
**
代码不多结合注释学习,基础知识写的很详细,多看注释结合代码学习
/**第八天所学 Allday08 类意思自己第八天所学的内容
* super关键字
* extends继承、Override方法重写、Overload方法重载
* static静态关键字
* 静态代码块
* final关键字(最后的、不可改变的)
*/
public class Allday08 {
//静态代码块加载类时运行,加载完不在运行,运行一次程序只执行一次
static{
System.out.println("代码块");
}
public static void main(String[] args) {
Son s = new Son(); //new一个儿子类对象
s.study(); //没有static修饰的方法需要对象.方法名调用
/* 构造函数调用只能new 类名 无参调用,new类名(参数)有参构造调用
* 同类构造方法间互相调用可this();如:加入是在儿子类中this();调用无参this(整数类型)调用有参
*/
new Son(1);
Son.paly(); //static修饰的方法,应当直接类点方法名调用,也可以s.paly(),但不建议,会产生警报.
Father f=new Father(); //new一个父亲类的对象
f.study(); //测试子类重写父类study方法不影响父类
}
}
class GradFather{
}
//父类继承爷爷类
class Father extends GradFather{
String name="爸爸";
final String surname="赵"; //final 儿子类可继承属性 但不能改
int age=40;
//父类无参构造
public Father() {
System.out.println("父类无参构造");//构造方法不能被继承
}
public void study() {
System.out.println("盖房子");
}
//父类的姓氏方法Surname姓氏的意思,final修饰的方法儿子可继承不可修改
final void SurName() {
System.out.println("我们姓赵不能改。");
}
}
//子类继承父类--爷爷类
class Son extends Father{
{
System.out.println("儿子构造代码块new时就运行在成员位置。作用:提取所有方法重复代码");
}
static int age=18; //static 修饰的属性,可以直接类点调用
//儿子的无参构造,new 时就会运行,儿子类的无参构造隐藏有父类的无参构造运行时父类无参构造也会运行。
public Son() {
// super();隐藏了
System.out.println("儿子类无参构造");
{
System.out.println("儿子类无参构造局部代码块位于方法中,执行所在方法时运行,作用:控制变量范围");
}
}
//儿子类有参构造,也体现了方法重载:一个类中方法名一样,传递参数类型不同调用不同的方法
public Son(int age) {
System.out.println("儿子"+Son.age+"岁");//这里会输出儿子18岁Son.调用的static修饰的属性
}
/*
* 重写父类的study方法,不影响父类本来的方法,
*重写:方法声明(名字/返回值/参数 )必须与父类的方法名一致
*/
public void study() {
//注意:static不能和this和super共用,因为static时可能还没对象。
//this、super在构造方法中必须在第一行代码
//this类对象引用
System.out.println("儿子"+this.age+"看书");//this调用当前类的属性、方法,位置:局部位置
//super父类对象的一个引用,在子类中用来调用父类功能
System.out.println("爸爸"+super.age+"盖房子");//super调用父类的属性、方法,位置:方法内局部位置,
}
//paly 为子类扩展,子类继承了父类的功能但也可以扩展自己的功能
//静态修饰的方法,调用时应当直接类名点调用
public static void paly() {
System.out.println("打游戏");
}
}