java抽象 继承 多态 接口

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

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);

因为在抽象方法中有值所以需要传递数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mingjiayouzi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值