**继承:**继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为
public class mp3 {
private String size = "比较小";
private String time = "听歌两个小时";
public void music(){
System.out.println("我可以播放音乐 mp3");
}
public String getSize() {
return size;
}
public String setSize(String size) {
this.size = size;
return this.size;
}
public String getTime() {
return time;
}
package test;
public class mp4 extends mp3{
private String sizemp4 = "比较小";
private String timemp4 = "听歌两个小时";
public void music()
{
System.out.println("我是mp4,可以观看视频");
super.music();//继承上一个父类
}
public String getSizemp4() {
return sizemp4;
}
public void setSizemp4(String sizemp4) {
this.sizemp4 = sizemp4;
}
public String getTimemp4() {
return timemp4;
}
public void setTimemp4(String timemp4) {
this.timemp4 = timemp4;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
new mp4().music();
new mp4().setSize("现在还可以");
System.out.println(new mp4().getSize());
System.out.println(new mp4().getSize());
}
}
这里面的mp3是mp4的父类,mp4可以继承mp3的方法 super.music();继承上一个父类,但是在子类构造方法可以通过super关键字访问。super(),括号中调用父类的相同参数的构造函数父类中有get和set方法,子类可以通过调用this.方法名访问父类的私有属性
**抽象:**在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。抽象类除了不能实例化对象之外,类的其它功能依然存在,成员变量、成员方法和构造方法的访问方式和普通类一样。由于抽象类不能实例化对象,所以抽象类必须被继承,才能被使用。也是因为这个原因,通常在设计阶段决定要不要设计抽象类。
父类包含了子类集合的常见的方法,但是由于父类本身是抽象的,所以不能使用这些方法。在Java中抽象类表示的是一种继承关系,一个类只能继承一个抽象类,而一个类却可以实现多个接口。
public abstract void makePC(); //抽象方法只有实现才有意义
抽象的类只有定义了之后才有意义
package test01;
public abstract class leishi { //抽象方法必须出现在抽象类里,在下方使用抽象方法必须使用抽象类,抽象类里面的方法不是必须都是抽象方法
private String kind;
public abstract void makePC(); //抽象方法只有实现才有意义
// public static void main(String[] args) {
// // TODO Auto-generated method stub
//
//
// }
}
//抽象方法必须出现在抽象类里,在下方使用抽象方法必须使用抽象类,抽象类里面的方法不是必须都是抽象方法,抽象方法不一定只存在在抽象类中,还存在在接口中
package test01;
public class test extends leishi{
@Override //子类继承父类,若父类没有抽象方法则必须重写
public void makePC() {
// TODO Auto-generated method stub
System.out.println("1");
System.out.println("2");
System.out.println("3");
System.out.println("4");
}
}
//子类继承父类,若父类没有抽象方法则必须重写
package test01;
public class padi extends leishi{
public void makePC() {
// TODO Auto-generated method stub
System.out.println("a");
System.out.println("b");
System.out.println("c");
System.out.println("d");
}
}
一个父类可有多个子类,一个子类只能有一个父类
leishi a = new test();
a.makePC();
leishi b = new padi();
b.makePC();
a=b; //由于ab都属于同级所以可以互相转换
b=a;
在调用类的时候使用 leishi 类型接收,由于ab都属于同级所以可以互相转换
**多态:**多态是同一个行为具有多个不同表现形式或形态的能力。
多态就是同一个接口,使用不同的实例而执行不同操作
package test;
public class test {
public static void main(String[] args) {
// TODO Auto-generated method stub
mp3 mp3_01 = new mp3();
mp3 mp3_02 = new mp4();
mp4 mp4_01 = new moblie();
mp3_01.music();
mp3_02.music();
}
}
可以使用不同类来接收其功能也是不同的,子类可以转化为父类,父类不能转化为子类
接口:接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。接口并不是类,编写接口的方式和类很相似,但是它们属于不同的概念。类描述对象的属性和方法。接口则包含类要实现的方法。除非实现接口的类是抽象类,否则该类要定义接口中的所有方法。
接口无法被实例化,但是可以被实现。一个实现接口的类,必须实现接口内所描述的所有方法,否则就必须声明为抽象类。另外,在 Java 中,接口类型可用来声明一个变量,他们可以成为一个空指针,或是被绑定在一个以此接口实现的对象。
package test01;
public interface java001 {
public abstract void jia(int m,int n);
public abstract void jian(int m,int n);
public abstract void cheng(int m,int n);
public abstract void chu(int m,int n);
}
一个实现接口的类,必须实现接口内所描述的所有方法,否则就必须声明为抽象类
package test01;
public class java002 implements java001{
@Override
public void jia(int m,int n) {
// TODO Auto-generated method stub
System.out.println("m+n="+(m+n));
}
@Override
public void jian(int m,int n) {
// TODO Auto-generated method stub
System.out.println("m+n="+(m-n));
}
@Override
public void cheng(int m,int n) {
// TODO Auto-generated method stub
System.out.println("m+n="+m*n);
}
@Override
public void chu(int m,int n) {
// TODO Auto-generated method stub
System.out.println("m+n="+m/n);
}
}
通过调用接口类中的方法实现目的,接口不能用继承需要使用实现implements
java001 t = new java002();
t.jia(a,b);
因为在抽象方法中有值所以需要传递数据