精华内容
下载资源
问答
  • 标签文档 未来持续更新 . . .
  • <p>Java extend 和implement 的区别是什么</p>
  • 继承:从多个具体的子类中抽取出...私有的属性不能被继承私有的方法不能被继承注意:父类只能有1个,子类可以有多个java是一种单继承语言,但是它支持继承链C++是多继承继承的优点:1:提高代码的复用性继承的缺点...

    继承:从多个具体的子类中抽取出相同的属性以及行为,组合成一个新的父类 然后让这些具体的子类继承这个父类

    继承关键字:extends

    语法格式

    修饰符 class 子类 extends 父类

    父类中公开的属性以及方法都能被子类继承

    注意:私有的属性不能被继承

    私有的方法不能被继承

    注意:父类只能有1个,子类可以有多个

    java是一种单继承语言,但是它支持继承链

    C++是多继承

    继承的优点:

    1:提高代码的复用性

    继承的缺点:

    1:提高了代码的耦合性

    构造方法的执行过程

    1:创建子类对象,先去调用父类的构造方法,再调用自己构造方法

    2:java中的顶级父类是Object

    3:如果一个类没有继承其他类,那么它默认继承Object

    4:无论new哪一个对象,都会先初始化Object

    5:如果子类初始化的时候,没有给属性赋值,那么它获取的是父类的属性值,如果子类给属性赋值了,那么就会覆盖父类属性的值

    6:初始化子类之前,一定要先初始化父类的值

    7:构造方法不能被继承

    子父类对于成员变量的处理

    1:父类有,子类也有,获取的是子类的

    2:父类有,子类没有,获取的是父类的

    3:父类没有,子类有,获取的是子类的

    4:父类没有,子类没有,编译报错

    子父类对于成员方法的处理

    1:父类有,子类也有,获取的是子类的

    2:父类有,子类没有,获取的是父类的

    3:父类没有,子类有,获取的是子类的

    4:父类没有,子类没有,编译报错

    e60770efe8f1c9d21587eb78fdfcfd5a.png

    90ff35a47fffbe2c32ce518fcb3fb14a.png

    展开全文
  • public class TestType {public static void... extend B,在定义泛型时,只能接受B或B的子类List extends B> list = new ArrayList();//编译通过list = new ArrayList(); //编译通过//list = new ArrayList(); /...

    public class TestType {

    public static void main(String[] args) {

    //? extend B,在定义泛型时,只能接受B或B的子类

    List extends B> list = new ArrayList();//编译通过

    list = new ArrayList(); //编译通过

    //list = new ArrayList(); //报错,编译不通过

    //除了null外,无论往集合中插入什么元素都报错,因为 extends E>只是告诉编译器集合中元素类型上限,

    //但它具体什么类型编译器不知道,也就是说它的类型是不确定的,既然不确定,为了类型安全,编译器只能阻止添加元素了

    //list.add(new A());//错误,编译不通过

    //list.add(new B());//错误,编译不通过

    list.add(null);

    //? super B,在定义泛型时,只能接受B或B的父类

    List super B> list1 = new ArrayList(); //编译通过

    list1 = new ArrayList(); //编译通过

    //list1 = new ArrayList(); //编译不通过

    //在add插入元素时,由于我们知道了集合中装的元素是B或B的父类,我们无法确定是具体哪个类型,

    //但是我们可以确定的是B和B的子类和“这个不确定类”是兼容的,因为它肯定是这个“不确定类”的子类,

    //所以我们可以往集合中添加B或B子类的对象

    list1.add(new C()); //编译通过

    list1.add(new B()); //编译通过

    //list1.add(new A()); //错误,编译不通过

    }

    }

    class A{

    }

    class B extends A{

    }

    class C extends B{

    }

    ? extend E : 指的是E及其E的子类,指定了泛型的上限(E),由于E是该范围内最上面的类,所以在list.add(具体类)是不可以的,因为只知道泛型的上限,但具体添加的对象和 list = new ArrayList<>(),中的类不一定匹配,会出现类型转换问题,所以干脆不可以添加。

    extends E> 在定义泛型时,只能接受E或E的子类,在往集合中插入元素时,由于 extends E>只是告诉编译器集合中元素类型上限,但它具体什么类型编译器不知道,也就是说它的类型是不确定的,既然不确定,为了类型安全,编译器只能阻止添加元素了

    补充:> 是 extends Object>的简写

    ? super E  : 指的是E及其E的父类,指定了泛型的下限(E),由于指定了泛型的下限E,所以添加的对象只能是E或者E的子类,这样就不会出现类型转换错误,这就可以添加了,编译成功。

    比如: List super Apple> apples; 表示集合中元素类型下限为Apple类型,即只能是Apple或Apple的父类,因此对于下面的赋值是合理:

    apples = new ArrayList();

    apples = new ArrayList();

    apples = new ArrayList();

    如果元素类型为Apple的子类,则编译不同过 :apples = new ArrayList();  //编译不通过

    再看看 super E>限定的集合的读写操作

    写入

    因为 apples中装的元素是Apple或Apple的某个父类,我们无法确定是哪个具体类型,但是可以确定的是Apple和Apple的子类是和这个“不确定的类”兼容的,因为它肯定是这个“不确定类型”的子类,也就是说我们可以往集合中添加Apple或者Apple子类的对象,所以对于下面的添加是允许的 :

    apples.add(new Apple());

    apples.add(new RedApple());

    读取

    编译器允许从apples中获取元素的,但是无法确定的获取的元素具体是什么类型,只能确定一定是Object类型的子类,因此我们想获得存储进去的对应类型的元素就只能进行强制类型转换了

    Apple apple = (Apple)apples.get(0);//获取的元素为Object类型

    问题来了,JDK1.5引入泛型的目的是为了避免强制类型转换的繁琐操作,那么使用泛型 super E>干嘛呢?我们可以使用 super E>写入数据。

    PECS法则

    那么这里,我们可以总结一条规律,“Producer Extends,Consumer Super”,意思是:

    Producer Extends:如果你需要一个只读的List,用它来produce T,那么使用 ?  extends T

    Consumer Super:如果你需要一个只写的List,用它来consumer T,那么使用 ? super T

    如果需要同时读取和写入,那么就不能使用通配符了。

    Java集合类的源码中,经常有将两者结合起来使用的,如:

    public class Collections{

    public static void copy(List super T> dest, List extends T> src) {

    int srcSize = src.size();

    if (srcSize > dest.size())

    throw new IndexOutOfBoundsException("Source does not fit in dest");

    if (srcSize < COPY_THRESHOLD ||

    (src instanceof RandomAccess && dest instanceof RandomAccess)) {

    for (int i=0; i

    dest.set(i, src.get(i));

    } else {

    ListIterator super T> di=dest.listIterator();

    ListIterator extends T> si=src.listIterator();

    for (int i=0; i

    di.next();

    di.set(si.next());

    }

    }

    }

    }

    展开全文
  • 主要介绍了详解JAVA中implement和extends的区别的相关资料,extends是继承接口,implement是一个类实现一个接口的关键字,需要的朋友可以参考下
  • 继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类。 在 Java 中通过 extends 关键字可以申明一个类是从另外一个类继承而来的 class 父类 { } class 子类 extends 父类 { } 继承就是子类继承...

    继承

    继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类。

    在 Java 中通过 extends 关键字可以申明一个类是从另外一个类继承而来的

    class 父类 {
    }
     
    class 子类 extends 父类 {
    }
    

    继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。

    继承的本质是对某一批类的抽象,从而实现对现实世界更好的建模。

    entends 的意思是“扩展”。子类是父类的扩展。

    java只有单继承,没有多继承!!!

    1、继承是类和类之间的一种关系。除此之外,类和类之间的关系还有依赖、组合、聚合等。
    2、继承关系的两个类,一个为子类(派生类),一个为父类(基类)。子类继承父类,使用关键字 extends 来表示。
    3、子类和父类之间,从意义上讲具有“is a”的关系

    //父类
    public class Person /*extends Object*/{
        private int money = 1000;
        public void say(){
            System.out.println("说了一句话!");
        }
    
        public int getMoney() {
            return money;
        }
    
        public void setMoney(int money) {
            this.money = money;
        }
    }
    
    //子类
    public class Student extends Person{//学生继承人     子类,派生类
        //子类继承了父类,就会拥有父类的全部方法
        //ctrl + H 可以查看类的继承情况。
        //在java中所有的类,都默认的直接或者间接继承Object类
    }
    
    //main函数调用输出
    public class main_test {
        public static void main(String[] args) {
            Student s1 = new Student();
            s1.say();//学生类继承了父类的say方法
            System.out.println(s1.getMoney());
        }
    }
    
    输出结果为:说了一句话!
    1000
    

    注:类的属性尽量使用private修饰,提高程序的安全性,保护数据,再使用get/set获数据。
    这是类的封装内容:https://blog.csdn.net/weixin_45804632/article/details/120647774

    ====================================================================
    实例:参考学习菜鸟教程:https://www.runoob.com/java/java-inheritance.html

    公共父类:

    public class Animal { 
        private String name;  
        private int id; 
        public Animal(String myName, int myid) { 
            name = myName; 
            id = myid;
        } 
        public void eat(){ 
            System.out.println(name+"正在吃"); 
        }
        public void sleep(){
            System.out.println(name+"正在睡");
        }
        public void introduction() { 
            System.out.println("大家好!我是"         + id + "号" + name + "."); 
        } 
    }
    

    老鼠类:

    public class Mouse extends Animal { 
        public Mouse(String myName, int myid) { 
            super(myName, myid); 
        } 
    }
    

    企鹅类:

    public class Penguin extends Animal { 
        public Penguin(String myName, int myid) { 
            super(myName, myid); 
        } 
    }
    

    继承的特性:

    1. 子类拥有父类非 private 的属性、方法。
    2. 子类可以拥有自己的属性和方法,即子类可以对父类进行扩展。
    3. 子类可以用自己的方式实现父类的方法。
    4. Java 的继承是单继承,但是可以多重继承,单继承就是一个子类只能继承一个父类,多重继承就是,例如 B 类继承 A 类,C 类继承 B 类,所以按照关系就是 B 类是 C 类的父类,A 类是 B 类的父类,这是 Java 继承区别于 C++ 继承的一个特性。
    5. 提高了类之间的耦合性(继承的缺点,耦合度高就会造成代码之间的联系越紧密,代码独立性越差)。

    子类继承父类的哪些方法?
    属性:

    • private修饰的实例数据域不能被子类继承,但是子类可以调用父类提供的访问器和修改器进行访问和修改
    • 无修饰符的实例数据域可以被子类继承
    • protected修饰的实例数据域可以被子类继承
    • public修饰的实例数据域可以被子类继承

    方法:

    • private修饰的实例方法不能被子类继承
    • 无修饰符的实例方法可以被子类继承
    • protected修饰的实例方法可以被子类继承
    • public修饰的实例方法可以被子类继承

    父类的构造方法不会被子类继承,但是可以通过super关键字进行调用。

    子类可以继承父类的所有方法吗?

    展开全文
  • Java继承(extend)的用法

    万次阅读 2018-12-22 21:38:07
    继承:从多个具体的子类中抽取出相同的属性以及行为,组合成一个新的父类 然后让这些具体的子类继承这个父类 继承关键字:extends ...java是一种单继承语言,但是它支持继承链 C++是多继承 继承的优点: 1:提高...

    继承:从多个具体的子类中抽取出相同的属性以及行为,组合成一个新的父类 然后让这些具体的子类继承这个父类
    继承关键字:extends
    语法格式
    修饰符 class 子类 extends 父类
    父类中公开的属性以及方法都能被子类继承

    注意:私有的属性不能被继承
    私有的方法不能被继承
    注意:父类只能有1个,子类可以有多个
    java是一种单继承语言,但是它支持继承链
    C++是多继承
    继承的优点:
    1:提高代码的复用性
    继承的缺点:
    1:提高了代码的耦合性

    构造方法的执行过程
    1:创建子类对象,先去调用父类的构造方法,再调用自己构造方法
    2:java中的顶级父类是Object
    3:如果一个类没有继承其他类,那么它默认继承Object
    4:无论new哪一个对象,都会先初始化Object
    5:如果子类初始化的时候,没有给属性赋值,那么它获取的是父类的属性值,如果子类给属性赋值了,那么就会覆盖父类属性的值
    6:初始化子类之前,一定要先初始化父类的值
    7:构造方法不能被继承

    子父类对于成员变量的处理
    1:父类有,子类也有,获取的是子类的
    2:父类有,子类没有,获取的是父类的
    3:父类没有,子类有,获取的是子类的
    4:父类没有,子类没有,编译报错
    子父类对于成员方法的处理
    1:父类有,子类也有,获取的是子类的
    2:父类有,子类没有,获取的是父类的
    3:父类没有,子类有,获取的是子类的
    4:父类没有,子类没有,编译报错
    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • http://www.cnblogs.com/sharpel/p/5859753.html
  • zxing.java源码解析Awesome Java 感谢对内容的整理 精选的 Java 框架、库和软件的精选列表。 灵感来自其他 . 构建工具 处理应用程序构建周期的工具。 - 声明式构建和依赖管理,支持约定优于配置。 它比 Apache Ant ...
  • Java中implement和extend

    千次阅读 2019-01-31 16:31:22
    extends是继承接口,implement是...JAVA中不支持多重继承,但是可以用接口来实现,这样就要用到implements,继承只能继承一个类,但implements可以实现多个接口,用逗号分开就行了 ,比如 class A extends B impleme...
  • 要求相关类都extend baseClass,就可以避免大多数重复代码,减少大部分的工作。我一听不对呀,这不是以前吃过的大亏吗?在等到同事介绍完所有的优点的时候,我简单的说了句。“在框架设计时避免使用大量exte
  • Javaextend 与 implement 区别

    千次阅读 2018-02-28 10:41:09
    http://blog.csdn.net/wm5920/article/details/9982057
  • JAVA的extends使用方法

    2021-03-10 10:22:32
    Java中,通过keywordextends继承一个已有的类,被继承的类称为父类(超类,基类),新的类称为子类(派生类)。在Java中不同意多继承。(1)继承class Animal{void eat(){System.out.println("Animal eat");}void sleep...
  • Extend

    2019-07-30 01:17:08
    NULL 博文链接:https://anniexuguoan.iteye.com/blog/835266
  • Java 继承 extends关键字

    2021-02-12 15:34:38
    继承:类和类的一种关系 extends关键字狗类是子类,派生类 动物类是父类,基类1.一个类只能有一个直接的父类2.多个类可以继承一个父类例:class A{}class B extends A{}class C extends A{} //类B和类C都可以继承...
  • 继承[Extend][Java]

    2020-03-24 20:36:06
    title: JavaExtend继承 date: 2020-03-24 19:43:10 author: JF blog: https://www.huqifa.com/ tags: - Java categories: - Java JavaExtend继承 继承大致分为 “继承中的成员变量和方法” “继承中的构造方法” ...
  • Java泛型中的“通配符(Wildcards)”和“边界(Bounds)”的概念。 extends T>:是指“上界通配符(Upper Bounds Wildcards)” super T>:是指“下界通配符(Lower Bounds Wildcards)”为什么要用通配符和边界?...
  • Java的泛型就是使用擦除来实现的 ,当你在使用泛型的时候,任何信息都被擦除,你所知道的就是你在使用一个对象。所以  List  和  List  在运行时,会被擦除成他们的原生类型List。 再通过这个例子加深一下...
  • extend 代码示例: class Book { String name; double price; String author; Book(String name, double price, String author) { this.name = name; this.price = price; this...
  • java学习--java 中的extend

    千次阅读 2019-03-21 20:56:47
    java中的继承是单继承,只能有一个父类,可以有多个子类。 子类在继承父类的属性和方法的时候可以拓展自己的属性和方法。 继承父类的时候,父类必须有一个无参构造。 子类构造的时候会默认通过super()来调用...
  • Java实现线程的方法有两种 分别是: /** * @author LiuTaiyi * @description implements Runnable * @date 2019/8/22 */ public class testThread implements Runnable { @Override public void run() { System...
  • [Java教程]jQuery插件扩展extend的实现原理0 2016-06-23 18:00:06相信每位前端的小伙伴对jQuery都不陌生吧,它最大的魅力之一就是有大量的插件,去帮助我们更轻松的实现各种功能。前几天晚上,闲来无事,就自己动手...
  • Java中继承机制为什么要使用extend

    千次阅读 2017-09-26 14:35:15
    在学习Java中的三大特性的继承特性时,需要用关键字extends来继承父类。那么为什么要使用extends? 至于sun公司为什么使用extends,有以下两个原因: (1)基于采用英语的时态,当出现第三人称单数形式时,在动词...
  • [Java]Extend vs Interface

    2018-12-18 20:13:47
    Extends is used when you want attributes of parent class/interface in your child class/interface Implements is used when you want attributes of an interface in your class. class Parent{ ...
  • 本人搜集的资料,看了这三篇,泛型彻底理解了。
  • 上面的例子不怎么恰当,只是演示了extend的用法,List2StringUtil是范型类,它能接受的范型必须是继承自java.util.List的集合;然后在类中,可以像使用List list一样使用T list。   总结 1. 使用 之后,类型...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 55,586
精华内容 22,234
关键字:

java的extend

java 订阅