10.继承、this和super关键字、方法重写、方法修饰符、final

一、继承

1.继承概念

至少有两个类,一个父类一个子类,满足is a的关系,父类不可以获取到子类的资源,子类可以获取到父类的资源。

2.继承注意点

2.1子类不能继承父类的私有资源

用private修饰的资源都只能在本类进行访问

2.2子类不能继承父类的构造方法

构造方法必须是和类名一样的,子类父类的类名不一样

但是可以进行调用,使用关键字super

2.3Java中继承是单继承的,最大的父类是Object

3.继承中访问成员变量的特点

3.1如果子类和父类的变量名重名时,优先访问子类的变量

3.2如果不重名的时候,优先访问子类的变量,如果子类没有则向上查找,一直找到Object类,如果找不到就报错

4.继承中访问成员方法亦是如此

拿以下代码为例,在fu类中我们定义并赋值了变量age为100,并且在zi类中再一次定义了变量age,实例化一个对象erzi,在最后打印出来的erzi.age为0(int类型数据的默认值)

public class Test1 {
    public static void main(String[] args) {
        zi erzi=new zi();
        erzi.name="小绿";
        System.out.println(erzi.name);
        System.out.println(erzi.age);
        erzi.print();
        erzi.show();
        erzi.showInfo("小黄");
        erzi.setSe("今天没洗脸");

    }
}
class fu{
    String name="小红";
    int age=100;
    private String se;
    public fu() {
        System.out.println("父类无参构造已执行");
    }

    public fu(String name, int age, String se) {
        this.name = name;
        this.age = age;
        this.se = se;
    }

    public void setSe(String se) {
        this.se = se;
    }

    public String getSe() {
        return se;
    }

    public void print() {
        System.out.println("执行了一个方法");
    }
}
class zi extends fu{
        int age;
        String name;
        public void show(){
        super.print();
        System.out.println("执行了一个子类方法");
    }
    public void showInfo(String name){
        System.out.println(name);
        System.out.println(this.name);
        System.out.println(super.name);
    }
}

二、this和super关键字

this表示的是当前对象的引用 super表示的是当前对象父类的引用

this和super的区别

1.构造方法的特点

this()表示调用自身的构造方法, super()调用的是父类的构造方法。根据括号里面是否有参判断调用的是无参构造还是有参构造,this()或者super()都只能写在调用函数的第一句并且只能同时存在一个

2.访问成员变量的特点

this.变量名:既可以访问自身的成员变量,也可以访问父类成员变量

super.变量名:只能访问父类的成员变量

3.访问方法的特点

this.方法名()、super.方法名()和访问成员变量一样,super只能访问父类的方法

综上:this表示既能获取子类的资源,又能获取父类的资源。super只能获取父类的资源

三、方法重写

1.方法重载:同一个类、方法名相同、形参列表不同和访问修饰符以及返回值无关

2.方法重写:继承中、方法名相同、参数列表相同、与修饰符和返回值有关

3.@override 用于检验方法是否重写

4.方法重写的场景:子类需要在父类方法的基础上进行扩展就需要使用重写

四、继承中访问构造方法的特点

1.如果子类没有调用父类的构造方法,则会默认执行父类的无参构造

2.如果子类调用了父类的有参构造,则不会执行父类的无参构造

3.如果父类只有有参构造,则子类必须调用父类的有参构造,所以在定义类中一般定义无参和有参两个构造方法

五、访问修饰符

 六、final

final修饰成员

1.修饰类:使用final修饰的类是不能被继承的

2.修饰方法:使final修饰的方法不能被重写的,但是可以重载的

public class Test3 {
    public static void main(String[] args) {
        print(11);
        print("小黑");

    }
    public static final void print(int num) {
        System.out.println(num);
    }
    public  static final void print(String name){
        System.out.println(name);
    }
}

3.变量

使用final修饰的成员变量在声明是就要进行赋值,只能赋一次值

使用final修饰的局部变量只能赋值一次,可以不用在声明时就进行赋值

注意点:

使用final修饰引用数据类型对象 不能改变的是地址值,可以改变对象的属性值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值