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

JavaSe之继承

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

JavaSe之继承

继承:
多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,
那么多个类无需再定义这些属性和行为,只要继承那个类即可。
如何实现继承:
class 子类名 extends 父类名{}
有了继承以后,我们定义一个类的时候,
可以在一个已经存在的类的基础上,还可以定义自己的新成员。
继承的好处:
1、提高代码的复用性
2、提高了代码的维护性
3、让类与类之间产生了关系,是多态的前提,为后面讲解多态做准备
继承的坏处:
继承让类与类产生了关系,类之间的耦合性变高了。
耦合:类与类之间的关系
内聚:就是类自己完成某件事的能力
开发的原则:
低耦合,高内聚

//定义一个父类:员工
public class Employee {
    public void method() {
        System.out.println("方法执行!");
    }
}

定义了一个员工的子类:讲师
public class Teacher extends Employee{
}
定义了员工的另一个子类:助教
public class Assistant extends Employee {
}

定义测试类
public class DemoExtends {
    public static void main(String[] args) {
        // 创建了一个子类对象
        Teacher teacher =new Teacher();// 创建了一个子类对象
        teacher.method();// Teacher类当中虽然什么都没写,但是会继承来自父类的method方法。

        Assistant assistant =new Assistant();// 创建另一个子类助教的对象
        assistant.method();
    }
}
   Java中继承的特点:
        1、Java只支持单继承,不支持多继承,这是类与类之间的关系
        2、Java支持多层继承(继承体系)
class GrandFather{
    public void show(){
        System.out.println("这是在爷爷里面的show方法");
    }
}
class Father extends GrandFather{
    public void show1(){
        System.out.println("这是在父亲里面的show1方法");
    }
}
class Son extends Father{
    public void show2(){
        System.out.println("这是在儿子里面的show2方法");
    }
}


public class ExtendsDemo3 {
    public static void main(String[] args) {
        Son s = new Son();
        s.show2(); //这是调用自己特有的方法       自己的
        s.show1(); //这是调用继承父类中的方法     父亲的
        s.show(); //这是调用多层继承中父类的方法  爷爷的
    }
}

使用继承的注意事项:
1、子类只能继承父类所有非私有的成员(成员方法和成员变量)
2、子类不能继承父类的构造方法,但是可以通过super(马上讲)关键字去访问父类构造方法。
3、不要为了部分功能而去继承

 class A{
                    public void show1(){}
                    public void show2(){}
               }

               class B{
                    public void show2(){}
                    public void show3(){}
                    public void show4(){}
                    public void show5(){}
                    public void show6(){}

               }

               通过观察发现,出现了一个相同的show2方法,在类A和B中都出现了
               class B extends A{
                    public void show3(){}
                    public void show4(){}
                    public void show5(){}
                    public void show6(){}
               }

为了重复的show2方法,我们采用了继承,这样虽然可以做,但是这样并不推荐
1、这样继承,我们发现,虽然把show2方法给继承过来了,但是我们也把show1也继承过来,
但是show1是A特有的,这样做显然是不合理的
2、为了一个相同的方法用继承改进,发现并没有简便到哪去,反而出错了会增加工作量

          那问题来了?
            到底什么时候使用继承呢?
                满足英语中一句话“is a”

            Person:
                Student
                Teacher
                Police

            液体:
                可乐
                水
                牛奶

          总结:只要满足is a这个语法,就可以使用继承
class Father2{

    Father2(){
        System.out.println("父类的无参构造");
    }

    int num = 20;
    private int num2 = 30;

    public void song(){
        System.out.println("唱歌");
    }

    private void diving(){
        System.out.println("潜水");
    }
}

class Son2 extends Father2{

//    Father2();
    public void show(){
        System.out.println(num);//子类可以访问父类的非私有成员变量
//        System.out.println(num2); //子类不能访问父类中的私有成员变量

        song(); //子类可以访问父类中的非私有成员方法
//        diving(); //子类不能访问父类中私有的成员方法
    }
}

public class ExtendsDemo4 {
    public static void main(String[] args) {
        Son2 s = new Son2();
        s.show();
    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/270737.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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