栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java学习第九课:多态与final关键字(零基础)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java学习第九课:多态与final关键字(零基础)

package test3;

public class test31 {
	public static void main(String[] args) {
		// 多态
		// 1.发生在父类与子类之间
		// 2.子类必须实现方法的重写
		// 3.定义的时候是父类,实例化的时候是子类
		
		//多态的好处 定义一个对象 ,实例化不同的子类,来调用不同子类已经实现的抽象方法
		Figure f = new Circle(3.4);
		f = new Rectangle(26.1, 8.4);// 新加的
		f.area();
		f.perimeter();
		f.printInfo();
	}
}

//几何图形
//父类本身无法实现方法,但要求子类必须要实现这个方法-抽象方法
//1.抽象方法的格式:  abstract 返回值类型 方法名字([参数]);  方法的声明 是不具体实现的 
//2.如果一个类包含了抽象方法,那么这个类一定是抽象类  格式:abstract class 类名{}
//注:这是充分非必要条件,一个类是抽象类,不一定包含抽象方法
//抽象类里面可以包含抽象方法也可以包含普通方法
abstract class Figure {
	double area;
	double p;

	void printInfo() {
		System.out.println("图形面积" + area);

		System.out.println("图形周长" + p);
	}

	// 计算面积
	abstract void area();// 抽象方法
	// 计算周长

	abstract void perimeter();
}

//3.如果一个父类包含抽象方法,那么它的子类一定要实现父类的所有的抽象方法
//final关键字修饰方法时,方法不可被重写
//final关键不不修饰抽象方法
class Circle extends Figure {
	// circle 用add
	double r;

	Circle(double r) {
		this.r = r;
	}

	@Override
	void area() {
		// TODO Auto-generated method stub
		area = Math.PI * r * r;
	}

	@Override
	void perimeter() {
		// TODO Auto-generated method stub
		p = 2 * Math.PI * r;
	}

}

//如果一个子类继承一个抽象的父类,需要实现父类所有的抽象方法
class Rectangle extends Figure {
	double width;// 宽
	double length;// 长

	Rectangle(double width, double length) {
		this.width = width;
		this.length = length;
	}

	@Override
	void area() {
		// TODO Auto-generated method stub
		area = this.width * this.length;
	}

	@Override
	void perimeter() {
		// TODO Auto-generated method stub
		p = 2 * (this.width * this.length);
	}

}
package test3;

public class test32 {
	public static void main(String[] args) {

	}
}
//抽象类是普通类的一个特例
//接口是抽象类的一个特例
//1.接口里面只可以有抽象方法,接口的成员变量必须是静态成员常量 格式:static final 数据类型 变量名;
//2.接口里面的静态成员常量只可以在初始化时候赋值
//3.接口里面不管是抽象方法还是静态成员常量,public访问控制权限
//格式:interface 接口名字{}
//4.一个文件里面只有一个公共类或公共接口
interface figure1{
	static final int a=1;//1.static final可省略(本质上静态成员常量-public可省略)
	void printInfo();//2.抽象方法 abstract关键字可省略,public可省略
	
	
}


//接口使用接口,格式:接口1 extends 接口2(两个接口之间的继承-单继承模式)
interface figure2 extends figure1{
	int b=2;
	void printInfo2();
}
abstract class figure3{
int b=2;//这是默认的
}
//特使情况,一个类实现多个接口,还要继承一个其他类
//格式:class 类名 extends 其他类名 implements 接口1,接口2,接口3.。
class figure123 extends figure3 implements figure1,figure2{
//add
	@Override
	public void printInfo2() {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void printInfo() {
		// TODO Auto-generated method stub
		
	}
	
}
//类使用接口,格式:类 implements 接口1,接口2,接口3.。。(多实现机制)
//类实现接口的时候,需要实现所有接口的所有方法(因为这些方法都是抽象方法)
class figure12 implements figure1,figure2{

	@Override
	public void printInfo() {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void printInfo2() {
		// TODO Auto-generated method stub
		
	}
	
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/952678.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号