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

    继承

        子类继承父类除私有内容外的其他内容

    继承: 子类可以自动拥有父类中除了私有内容外的其他所有内容.

    语法:

    public class 子类 extends 父类{

    }

    那什么样的逻辑我们可以写成继承关系呢? 当出现xxx是一种xxxx的时候. 就可以用继承关系.

    比如, 写一个手机类

    package com.lewen.day18;
    
    public class Phone {
        public void call(){
            System.out.println("打电话");
        }
    }

    写个小米手机

    package com.lewen.day18;
    
    public class Xiaomi extends Phone {
    }

    测试一下

    package com.lewen.day18;
    
    public class TestExtends {
        public static void main(String[] args) {
            Xiaomi xm = new Xiaomi();
            xm.call();
        }
    }

    我们发现程序没有报错, 并且, 可以正常执行. 但是我们看Xiaomi这个类里并没有写任何代码. 就写了个继承.

    对了, 继承就是这样的. Xiaomi继承了Phone的所有. 接下来. 我们试试看加了private的方法会不会被继承

    package com.lewen.day18;
    
    public class Phone {
        public void call(){
            System.out.println("打电话");
        }
    
        private void Msn(){
            System.out.println("出厂编码");
        }
    
    }

    测试

    package com.lewen.day18;
    
    public class TestExtends {
        public static void main(String[] args) {
            Xiaomi xm = new Xiaomi();
            xm.call();
    //        xm.msn();
        }
    }

    不光是方法, 属性也一样

    package com.lewen.day18;
    
    public class Phone {
        private String mha;
    
        public void call() {
            System.out.println("打电话");
        }
    
        private void msn() {
            System.out.println("出厂编码");
        }
    
    }

    测试

    package com.lewen.day18;
    
    public class TestExtends {
        public static void main(String[] args) {
            Xiaomi xm = new Xiaomi();
            xm.call();
    //        xm.msn(); //报错,找不到
    
    //        xm.mha = "4000";             // 报错
    //        System.out.println(xm.mha);
    
        }
    }

    没问题.

    OK. 回到继承的概念. 在java里. 子类继承父类. 子类会自动拥有父类中除了私有内容外的其他所有内容

    注意: 不是说子类继承了父类就不能写其他的了. 子类还可以写自己的方法和属性. 互不干扰.

    package com.lewen.day18;
    
    public class Xiaomi extends Phone {
        public void ai() {
            System.out.println("小爱同学");
        }
    }

    测试:

    package com.lewen.day18;
    
    public class TestExtends {
        public static void main(String[] args) {
            Xiaomi xm = new Xiaomi();
            xm.call();  // 父类中方法
            xm.ai();    // 子类中方法
        }
    }

    所以从另一个角度讲, 子类其实是对父类进行了扩展. 在父类已经给了一些方法和属性的基础上再加一点儿新功能. 可以节省很多的代码.

    注意: java只能单继承. 说白了. 每个儿子只能有一个爹

  • 相关阅读:
    什么叫线程安全?servlet 是线程安全吗?
    SynchronizedMap 和 ConcurrentHashMap 有什么区别?
    CopyOnWriteArrayList 可以用于什么应用场景?
    乐观锁和悲观锁的理解及如何实现,有哪些实现方式?
    当一个线程进入某个对象的一个 synchronized 的实例方 法后,其它线程是否可进入此对象的其它方法?
    一个线程运行时发生异常会怎样?
    用 Java 实现阻塞队列 ?
    在 java 中 wait 和 sleep 方法的不同?
    为什么代码会重排序?
    volatile 有什么用?能否用一句话说明下 volatile 的应用场景?
  • 原文地址:https://www.cnblogs.com/wenyule/p/12209178.html
Copyright © 2011-2022 走看看