zoukankan      html  css  js  c++  java
  • java中的继承

    什么是继承

    继承就是子类继承父类的特征与行为。特征即成员属性,行为即成员方法

    为什么需要继承?

    提高代码复用性,减少代码冗余,提高开发效率。

    比如Dog类里有姓名和年龄,Cat类也有姓名和年龄,这时就可以将这些共有的属性,抽取到一个新的类中,这个类就叫做父类。

    示例代码一:不用继承的情况

    Cat类

    public class Cat {
        private String name;
        public void sleep(){
            System.out.println(name+"睡觉");
        }
        public void eat(){
            System.out.println(name+"吃饭");
        }
        public void miao(){
            System.out.println(name+"喵喵叫");
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
    }
    

    Dog类

    public class Dog {
        private String name;
        public void sleep(){
            System.out.println(name+"睡觉");
        }
        public void eat(){
            System.out.println(name+"吃饭");
        }
        public void wolf(){
            System.out.println(name+"汪汪叫");
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
    }
    

    测试类

    public class Test {
        public static void main(String[] args) {
            Dog dog = new Dog();
            dog.setName("狗");
            dog.sleep();
            dog.eat();
            dog.wolf();
            System.out.println("-------------------------------------------");
            Cat cat = new Cat();
            cat.setName("猫");
            cat.sleep();
            cat.eat();
            cat.miao();
        }
    }
    

    运行结果

    狗睡觉
    狗吃饭
    狗汪汪叫
    -------------------------------------------
    猫睡觉
    猫吃饭
    猫喵喵叫
    

    示例代码二:使用继承的情况

    Animal类

    public class Animal {
        private String name;
        public void sleep(){
            System.out.println(name+"睡觉");
        }
        public void eat(){
            System.out.println(name+"吃饭");
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
    }
    

    Cat类

    public class Cat extends Animal{
        public void miao(){
            System.out.println(this.getName()+"喵喵叫");
        }
    }
    

    Dog类

    public class Dog extends Animal {
        public  void  wolf(){
            System.out.println(this.getName()+"汪汪叫");
        }
    }
    
    

    测试类

    public class Test {
        public static void main(String[] args) {
            //子类继承父类,此时父类对象只能调用父类里面的属性和方法
            Animal animal1= new Animal();
            animal1.setName("狗");
            animal1.sleep();
            animal1.eat();
            Animal animal2 = new Animal();
            animal2.setName("猫");
            animal2.sleep();
            animal2.eat();
            System.out.println("----------------------------");
    
            //子类继承父类,子类对象既可以调用父类里的属性和方法,也可以调用自身的属性和方法
            Dog dog = new Dog();
            dog.setName("狗");
            dog.sleep();
            dog.eat();
            dog.wolf();
            Cat cat = new Cat();
            cat.setName("猫");
            cat.sleep();
            cat.eat();
            cat.miao();
            System.out.println("----------------------------");
    
            //子类继承父类,也可以用多态中的向下转型,访问子类的属性和方法
            Animal animal = new Dog();
            //animal.wolf(); 编译报错,说明向上转型的父类引用变量无法访问子类中的属性和方法
            Dog dog1 = (Dog) animal;
            dog1.setName("狗");
            dog1.sleep();
            dog1.eat();
            dog1.wolf();
            Animal animal3 = new Cat();
            Cat cat1 = (Cat) animal3;
            cat1.setName("猫");
            cat1.sleep();
            cat1.eat();
            cat1.miao();
        }
    }
    
    
    

    运行结果

    狗睡觉
    狗吃饭
    猫睡觉
    猫吃饭
    ----------------------------
    狗睡觉
    狗吃饭
    狗汪汪叫
    猫睡觉
    猫吃饭
    猫喵喵叫
    ----------------------------
    狗睡觉
    狗吃饭
    狗汪汪叫
    猫睡觉
    猫吃饭
    猫喵喵叫
    

    继承的特点

    1. extends 修饰
    2. 一个类只能继承一个父类
    3. 子类在继承父类的同时,也可以有自己的属性和方法
    4. 子类继承父类,父类的对象只能调用父类中的属性和方法,无法调用子类的方法
    5. 子类继承父类,子类的对象既可以调用父类中的对象和属性,也可以调用自身的对象和属性
    6. 子类继承父类,是多态的前提
  • 相关阅读:
    mysql pt-osc
    mysql表分区,mysql分区表
    mysql5.5无法启动,Can't open and lock privilege tables: Table 'mysql.host' doesn't exist 问题的解决方法
    mysql压缩表,mysql行压缩与页压缩
    mybase7破解
    (1.5)es集群部署运维【最佳实践】
    kafka基础概念
    midway日志体系
    midwayjs 使用egg-mysql
    midway mysql egg-mysql 配置 基础操作 增删改查
  • 原文地址:https://www.cnblogs.com/anycall/p/10791477.html
Copyright © 2011-2022 走看看