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. 子类继承父类,是多态的前提
  • 相关阅读:
    Eclipse建立Java工程中的三个JRE选项的区别(Use an execution environment JRE,Use a project specific JRE,Use default JRE)
    Maven项目报错:Missing artifact****和ArtifactDescriptorException: Failed to read artifact descriptor for***和Cannot change version of project facet Dynamic web module to 2.5
    使用jdk的keytool 生成CA证书的方法
    Linux shell逐行读取文件的方法
    ArrayList的实现原理
    时间复杂度总结
    RPC的原理总结
    hashcode和equals方法的区别和联系
    消息队列的应用场景总结
    Java中IO流中的装饰设计模式(BufferReader的原理)
  • 原文地址:https://www.cnblogs.com/anycall/p/10791477.html
Copyright © 2011-2022 走看看