【全网最全,小白一看就会】JAVA继承

一,首先,我们先来了解一下生活中的继承:

子承父业

龙生龙 凤生凤

老鼠生来会打洞

你长得真像你父亲

二,在java中的继承

继承是类和类之间的关系

继承至少得两个类:

语法格式:

class B  extends A {
    
}

其中 B是一个类,A是一个类

B类继承了A类。 B叫A的子类。A是B的父类(超类,基类)

三,接着我们展示一下入门案例:

package com.qfedu.b_extends;
​
class Father {
    String name;
    int age;
    //行为
    public void eat () {
        System.out.println("吃大盘鸡拌面");
    }
}
//使用了extends以后  Son 类就继承了Father这个类
//就意味着我Son类可以使用Father类下面某些属性和某些方法
class Son extends Father{
    
}
​
public class Demo1 {
    public static void main(String[] args) {
        Son son = new Son();
        //发现继承以后,可以使用父类一些属性
        son.name = "小骚磊";
        son.age = 1;
        System.out.println(son.name);
        System.out.println(son.age);
        son.eat();
        
    }
​
}
​

案例:

Animal 类 父类

Dog类 子类

Cat类 子类

继承的意思,就是将父类的属性和方法拿到子类中去使用

1.成员变量(属性)

公开的和默认的属性,子类可以继承使用的

私有的成员变量,子类无法使用的

2.成员方法

公开的和默认的成员方法,子类可以继承使用

私有的成员方法,子类无法使用的

总结:凡是私有的 无法继承。

3.构造方法

先执行父类的构造,再执行子类的构造方法

如果父类中有有参构造,但是没有无参构造。子类会报错

关于构造方法:父类与子类的构造方法的形式保持一致。 ​ 父类中有无参构造。子类也有无参构造。父类中没有无参构造,子类也没有无参构造方法

package com.qfedu.c_extends;
​
class Father {
    //只要是公开的或者默认的属性,子类可以使用的
    public String name;//公开的一个属性
    int age;//就是默认的属性
    private int id;//private修饰的 子类不能使用
    
    public Father () {
        System.out.println("父类的构造方法");
    }
    public Father (String name) {
        this.name = name;
    }
    //eat方法 使用public修饰的  子类可以使用
    public void eat () {
        System.out.println("吃窝窝头");
    }
    //默认的方法  子类是可以使用的
    void work () {
        System.out.println("开拖拉机耕地");
    }
    //  使用private修饰的方法就是私有化的方法,子类能调用吗?不能
    private void smoking () {
        System.out.println("抽旱烟");
    }   
}
class Son extends Father {
​
    
    //在子类写有参构造即可
    
    
}
public class Demo1 {
    public static void main(String[] args) {
        Son son = new Son();
        //验证name  age在子类中可以使用的
        son.name = "狗蛋";
        son.age = 12;
        //son.id = 12;
        son.eat();//可以使用父类的公开的方法
        son.work();
        //不可以使用父类私有化的方法
        //.son.smoking();
        
    }
​
}
​

刚才在写代码的时候,发现私有成员变量子类不能用。还有私有化的方法子类不能调用。咋办?

package com.qfedu.c_extends;
​
class Father1 {
    private String name;
​
    public String getName() {
        return name;
    }
​
    public void setName(String name) {
        this.name = name;
    }
    
    private void smoking () {
        System.out.println("抽旱烟");
    }
    public void test () {
        smoking();
    }
    
    
}
class Son1 extends Father1 {
    
}
public class Demo2 {
    public static void main(String[] args) {
        Son1 son1 = new Son1();
        //咋办? 可以使用setter和getter方法
        //son1.name = "";
        son1.setName("狗蛋");
        System.out.println(son1.getName());
        son1.test();
    }
​
}
​

练习的案例:

Animal 类:

属性 : name, age ,sex 私有化的

方法: 吃 运动

子类:Panda

使用Panda继承Animal 并可以使用Animal下面的所有属性和方法,对属性进行赋值

方法调用

package com.qfedu.c_extends;
​
class Animal {
    private String name;
    private int age;
    private char sex;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public char getSex() {
        return sex;
    }
    public void setSex(char sex) {
        this.sex = sex;
    }
    //方法
    public void eat () {
        System.out.println("吃饭");
    }
    public void sport () {
        System.out.println("运动");
    }
    
}
class Panda extends Animal {
    
}
//继承有啥好处呢?代码可以重复利用
class Cat extends Animal {
    
}
class Dog extends Animal {
    
}
public class Demo3 {
    public static void main(String[] args) {
        Panda panda = new Panda();
        panda.setName("熊大");
        panda.setAge(9);
        panda.setSex('公');
        panda.eat();
        panda.sport();
    }
​
}
​

继承:

Java中的继承都是单继承。只能有一个父类

Java中可以多重继承

package com.qfedu.c_extends;
​
class A {
    
}
class B extends A{
    
}
class C extends B {
    
}
public class Demo4 {
    public static void main(String[] args) {
        
    }
​
}
​

总结:

1.至少两个类,使用关键字extends
2.子类是否能使用父类的成员变量和成员方法
    子类不能使用父类私有化的所有的东西
    

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值