java里的extend(java string用法)
老铁们,大家好,相信还有很多朋友对于java里的extend和java string用法的相关问题不太懂,没关系,今天就由我来为大家分享分享java里的extend以及java string用法的问题,文章篇幅可能偏长,希望可以帮助到大家,下面一起来看看吧!
java里面interface,implement和extends的作用和用法,多谢
你应该好好看看面向对象,然后在学学java基础语法。
interface是一个接口,类似于C++中的纯虚函数。
举个简单的例子,有一类东西,都具有同样的行为,而这个共有的行为实现方式不一样。
如:笔这类东西,都有共同的行为“写”,铅笔、毛笔、圆珠笔、钢笔都有“写”的功能,但实现起来不一样。那么我们就可以抽象出一个接口“笔”
interface笔{
void写();
}
implement的意思是指在铅笔、毛笔、圆珠笔要有”写“的这个功能,就需要实现接口”笔“的”写“功能。而这个关键字implement就是实现的意思,如:
class铅笔 implement笔{
void写(){
用铅芯画
}
}
class钢笔 implement笔{
void写(){
用墨水画
}
}
而你提到的extends是指一个继承关系,子类继承父类的功能。举个简单的例子:父类”灯“具有”发光“的功能,而子类"台灯",只需要extends父类”灯“就拥有了发光的共功能。
接口和继承的区别,由于时间有限,你参考这篇帖子
java的extend什么时候子类能创建自己的方法
java的面向对象包括封装、继承、多态3个主要要点,那么子类继承父类后程序中各成员的执行顺序是怎样的呢?下面教大家怎么自己测试其执行顺序。
工具/原料
java运行环境
Notepad++
方法/步骤
首先定义2个类Person和Student,代码如图所示。
因为目的是要解决子类继承父类后程序的执行顺序,所以只运行Student.java就可以了,如果运行Person.java就相当于没有了继承关系也失去了意义,故执行代码和结果如图所示。
由第二步可以看出静态代码块是程序首先执行的,而且先执行父类再执行子类的,并且有几个对象只执行一次静态代码块。
其次是从程序主方法开始执行,再执行非静态代码块和无参构造函数,而且仍然是先执行父类再执行子类的。
如果子类含有有参的构造函数,那么执行子类的有参构造函数,就不执行子类的无参构造函数了,但同样要执行父类的无参构造函数。
看到这里你会发现,非静态代码块和静态代码块的区别在于非静态代码块和构造函数一样,需要创建一次对象就执行一次的。
随后执行子类的成员函数,如果子类的成员函数重写了父类的成员函数,则只执行子类的不执行父类的。
最后是主函数,因为主函数一个程序只有一个,所以只执行一次本程序的主函数。
综上所述,java中子类继承父类程序各成员的执行顺序应该是:
父类的静态代码块—>子类的静态代码块—>主方法(执行哪个程序就执行哪个程序的主方法)—>父类的非静态代码块—>父类的无参构造函数—>子类的非静态代码块—>子类的无参构造函数(若实际子类执行的是有参构造函数,则不执行无参构造函数)—>成员函数(指定执行哪个就执行哪个成员函数,若重写了父类成员函数,则只执行子类的成员函数)
java什么叫子类
父子类:存在继承关系,关键字extends,例如你说的:classSonextendsFather{Stringname;}儿子是父亲的一个子类,是两个独立的类,只是子类继承父类的成员变量和成员方法
内部类:与继承无关,是定义在一个类内部的类,可以看成是类的一部分,分为:
例如:classFather{classFatherClothesextendsClothes{}}这个表示“父亲的衣服FatherClother”定义在父亲类里面(没有继承关系),并继承衣服类Clother(有继承关系)
此时“父亲的衣服类”可以看成是父亲类的一个一个成员变量,但他们没有继承关系,可以写成:Father.FatherCloter,而那个“.”,表示成员运算符表示FatherClother是Father的一个成员,就像上面Son类中的Son.name一样,但是我们不能写成Father.Son。
所以楼主说的“classa1extendsa2{}那么a1是a2的子类吗?”是对的。
“我们写B1.B2.C3(中间是点号)的时候,就表示c3是b2的子类,b2是b1的子类?”不是子类,是内部类
“那classa1{classa2{}}这样a2也是a1的子类吗?也可以写成a1.a2?”不是子类,是内部类
内部类在解决这样的问题的时候,很有用(当然只是一个方面,还有别的用处):
一个接口A中有p()方法,一个类B中也有p()方法,那么我想让这个接口被B实现,然后调用p()方法(B类中的p()方法,我不想覆盖),但是我们调用的哪个?
此时我们可以在B的内部声明一个内部类C,让C去实现A接口,然后调用B中原有的p()方法,可以用B的对象b.p(),调用接口中被实现的p()方法,可以b..c.p()(c是类C的一个实例)
继承,太熟悉了,熟悉到都不知道说什么了,只能想到这么一句:继承意味着基于一个已经定义好的类创建一个新的类,新的类将以某种方式扩展原有的类,可以认为就是一个类得到另一个类所有属性的过程(构造函数木有被继承,但子类可以通过super调用)。
后面还有匿名内部类,有兴趣可以百度一下了解了解。
好了,关于java里的extend和java string用法的问题到这里结束啦,希望可以解决您的问题哈!