java中abstract,static,final三个关键字的学习

abstract (抽象)

  1. 修饰类:为抽象类,被abstract修饰后将无法实例化对象,只能被继承使用。
  2. 修饰方法:为抽象方法,抽象方法没有方法体,子类在继承抽象方法时,必须重写所有抽象方法
// 抽象类,只可以继承使用
public abstract class Animal {
	
	// 抽象方法,没有方法体,小括号后面直接分号结束
	public abstract void eat();
	
	public abstract void sleep();
	
}
public class Cat extends Animal {
	
	// 继承抽象类需要重写抽象类中的所有抽象方法
	@Override
	public void eat() {
		System.out.println("猫吃鱼");
	}

	@Override
	public void sleep() {
		System.out.println("猫睡觉");
	}

}

static (静态的)

  1. 可修饰:属性,方法,初始化代码块以及内部类。被static修饰后称为静态属性,静态方法和静态代码块。
  2. 静态属性特点:静态属性是所有对象共享的属性,不用创建对象,可通过类名.属性名直接访问。
  3. 静态方法特点:
    可以使用类名.方法名直接调用;
    静态方法与对象无关,不能使用this和super关键字;
    静态方法中自能访问静态的属性和静态的方法;
  4. 静态代码块的特点:会在类加载时执行,可以在静态代码块中初始化静态属性。
public class PhoneStatic {
	
	// 静态属性:
	public static String book;
	
	// 静态代码块初始化:
	static {
		book = "《程序员的自我修养》";
	}
	
	// 修饰方法:
	public static void call(String name) {
		System.out.println("给" + name + "打电话!");
	}
	
	public static void playGame() {
		System.out.println("玩游戏");
	}
	
}
public class DemoStatic {

	public static void main(String[] args) {
		
		// static关键字的用法
		// 1.修饰属性  2.修饰方法  3.修饰代码块  
		
		// 通过类名.属性,方法名调用
		System.out.println("努力学习" + PhoneStatic.book);
		PhoneStatic.call("刘大仙");
		PhoneStatic.playGame();
		
		// 运行结果:
		// 努力学习《程序员的自我修养》
		// 给刘大仙打电话!
		// 玩游戏
	}
	
}

final (最终的)

1.可修饰:属性,局部变量,方法,类。被final修饰后分别称为常量属性,常量,最终方法,最终类。
2.常量的特点:只能被赋值一次且终身不能被修改(重新赋值)。
3.常量属性的特点:只能赋值一次,没有默认值,必须手动赋值。
4.最终方法的特点:最终方法不能被子类所覆盖。
5.最终类有什么特点:最终类不能被继承。

public class EunuchFather {

	// final方法
	public final void pee() {
		System.out.println("宦官他爹嘘嘘");
	}
	
	public final void marry() {
		System.out.println("宦官他爹结婚");
	}
}
// final修饰类,无法派生子类,但是可以继承父类
public final class Eunuch extends EunuchFather {

	// final修饰属性,为常量,在使用前就应该为其初始化
	public final int a = 180;
	public final String name = "赵高";
	
	// final修饰方法,方法不能被重写
//	public final void pee() {
//		System.out.println("宦官嘘嘘");
//	}
//	
//	public final void marry() {
//		System.out.println("宦官结婚");
//	}
	
	public void pee2() {
		System.out.println(name + "嘘嘘");
	}
	
	public void marry2() {
		System.out.println(name + "“结婚”");
	}
	
}
public class DemoFinal {

	public static void main(String[] args) {
		
		// final:最终的
		// 可用于修饰类,属性,方法
		
		Eunuch eunuch = new Eunuch();
		
		System.out.println("身高:" + eunuch.a + "cm");
		System.out.println("姓名:" + eunuch.name);
		
		eunuch.pee2();
		eunuch.marry2();
		
		// 执行结果:
		// 身高:180cm
		// 姓名:赵高
		// 赵高嘘嘘
		// 赵高“结婚”
	}
	
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值