栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

学习博客:继承

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

学习博客:继承

继承的本质是对某一批类的抽象

Java中类只有单继承,没有多继承

继承关系的两个类为子类(派生类)和父类(基类),子类继承父类,使用关键字extends表示,extends的意思为扩展,子类是父类的扩展

继承是类和类之间的一种关系,还有依赖、组合、聚合等


1.Object类

创建一个父类

//父类,基类
//在Java中,所有的类都默认直接或间接继承object
//父类,基类
public class Person {

    //public    共有的
    //protected 受保护的
    //default   默认
    //private   私有

    public int money = 10_0000_0000;

	//alt + insert
    public int getMoney() {
        return money;
    }

    public void setMoney(int money) {
        this.money = money;
    }

    public void say(){
        System.out.println("say");
    }
}

创建一个子类Student

//派生类,子类
//子类继承父类,就会拥有父类的全部方法
public class Student extends Person{

}

创建一个子类Teacher

//派生类,子类
public class Teacher extends Person{

}

创建main方法

public class Application {
    public static void main(String[] args) {

        Student student = new Student();
        student.say();

        System.out.println(student.money);

    }
}

子类继承父类,就会获得父类的所有方法。
在Person类中添加属性和方法:

public int money = 10_0000_0000;

public void say(){
        System.out.println("say");
    }

Student类为Person的一个子类,继承了Person类的一切方法,因此在main方法中

		Student student = new Student();
        student.say();
		System.out.println(student.money);

便可得到结果:

私有(private)无法被继承
子类构造器默认调用了父类的无参构造

2.super关键字

super关键字:
1.调用父类的构造器(必须要在子类构造器的第一行)
2.必须只能出现在子类的方法或构造器中
3.super和this不能同时调用构造器

与this关键字的区别:
1.代表对象不同
this:本身调用这个对象
super:代表父类对象的引用

2.前提条件
this:无继承也可以使用
super:只能在继承条件下才可以使用

3.构造器:
this(); 本类的构造
super(); 父类的构造

public class Application {
    public static void main(String[] args) {
        Student student = new Student();
        student.test("杨");
    }
}
public void test(String name){
	System.out.println(name);   //传参	student.test("杨");
	System.out.println(this.name);  //当前类
	System.out.println(super.name); //父类
}
3.重写方法

重写需要有继承关系,子类重写父类的方法。重写只针对方法,与属性无关。
1.方法名必须相同
2.参数列表必须相同(否则就是重载了)
3.修饰符:范围可以扩大但不能缩小 private —> Protected --> Default --> public
4.抛出异常:范围可以被缩小但不能扩大 ClassNotFoundException —> Exception(大)

重写:子类的方法和父类必须一致,但方法体不同

重写的原因:
子类不一定需要(或不一定满足)父类的功能
快捷键:alt + insert —> Override

静态重写:

//继承
public class A extends B{

    //@Override //注解:有功能的注解
    public static void test() {
        System.out.println("A=>test()");
    }
}

//重写都是方法的重写,与属性无关
public class B {

    public static void test(){
        System.out.println("B=>test()");
    }
}
public class Application {

    //静态方法与非静态方法区别很大
    //静态方法:方法的调用只和左边:定义的数据类型有关
    //非静态方法:重写 不能为private 要为public

    public static void main(String[] args) {

        //方法的调用只和左边:定义的数据类型有关
        A a = new A();
        a.test();

        //父类的引用指向了子类
        B b = new A();
        b.test();

    }
}

非静态重写:

//继承
public class A extends B{

    //@Override //注解:有功能的注解
    public void test() {
        System.out.println("A=>test()");
    }
}
//重写都是方法的重写,与属性无关
public class B {

    public void test(){
        System.out.println("B=>test()");
    }
}


静态方法与非静态方法区别很大

静态方法:方法的调用只和左边定义的数据类型有关

		//方法的调用只和左边定义的数据类型有关
        A a = new A();
        B b = new A();
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/750178.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号