Java中的继承、super和this、final和static等知识点

2020.6.18 20:29

继承

继承是面向对象的三大特征之一,可使得子类具有父类的属性和方法,也可在子类中重新定义以及追加属性和方法。
格式:通过extends来实现
注意点:继承只能单继承,通俗说父亲只能有一个。
例如:class A extends B{ … }

class 子类 extends 父类{  ...  }

class student extends people{ … }
继承的好处:

  • 使得类与类之间产生关系,父子关系,子类可使用父类中的非私有成员。
  • 提高代码的复用性,多个类相同的成员可以放到同一个类中。
  • 提高代码的维护性,只需修改一处即可。
    弊端:类之间产生了关系,增强了类的耦合性,当父类发生改变时,子类中的实现也会随着变化,削弱了子类的独立性。

super和this关键字

this代表本类对象的引用。
super代表父类存储空间的标识。

this.成员变量---->访问本类成员变量
super.成员变量---->访问父类成员变量
构造方法:
this(…):访问本类的构造方法
super(…):访问父类的构造方法

子类所有的构造方法都会默认访问类中的无参构造方法。

方法重写

子类出现和父类中一模一样的方法声明,方法名一样,参数列表也必须一样。
子类需要父类中的功能,还可有自己定义的特有内容。
Override注解:【检验】当前方法是否为重写的方法。

方法重写注意事项:

  1. 私有方法不能被重写
  2. 子类方法的访问权限不能更低(public > 默认 > 私有)
public class Fu {
    private void show() {
        System.out.println("Fu中show()方法被调用");
    }

    void method() {
        System.out.println("Fu中method()方法被调用");
    }
}

public class Zi extends Fu {

    /* 编译【出错】,子类不能重写父类私有的方法*/
    @Override
    private void show() {
        System.out.println("Zi中show()方法被调用");
    }
   
    /* 编译【出错】,子类重写父类方法的时候,访问权限需要大于等于父类 */
    @Override
    private void method() {
        System.out.println("Zi中method()方法被调用");
    }

    /* 编译【通过】,子类重写父类方法的时候,访问权限需要大于等于父类 */
    @Override
    public void method() {
        System.out.println("Zi中method()方法被调用");
    }
}

final关键字

修饰基本数据类型变量:数值不能发生改变
修饰引用数据变量时:引用类型的地址值不能发生改变,内容可变。

public static void main(String[] args){
    final Student s = new Student(23);
  	s = new Student(24);  // 错误
 	s.setAge(24);  // 正确
}

static关键字

static表示静态,可修饰【成员方法】和【成员变量】
可使用类名和对象名来调用。推荐使用类名调用。
重点

  • 非静态的成员方法:能访问静态的成员变量、非静态的成员变量、静态的成员方法、非静态的成员方法。
  • 静态的成员方法:能访问静态成员变量、静态的成员方法
    总结:静态成员方法只能访问静态成员。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值