java日常记录7 -- final和abstract修饰符
  cEe6YWJIAuf2 2023年11月14日 30 0


接java日常记录6

final修饰符
用final修饰的类不能被继承,没有子类。

用final修饰的方法可以被继承,但是不能被子类的重写。

public class Person{
	public final void print(){}
	}

//编译报错
public class Student extends Person{
	public void print(){

	}
}

用final修饰的变量表示常量,只能被赋一次值.其实使用final修饰的变量也就成了常量了,因为值不会再变了。
【修饰局部变量】

public class Person{
	public void print(final int a){
//编译报错,不能再次赋值,传参的时候已经赋过了
	a = 1;
	}
}

public class Person{
	public void print(){
	final int a;
	a = 1;
	//编译报错,不能再次赋值
	a = 2;
	}
}

【修饰成员变量-非静态成员变量】

public class Person{ private final int a; }

只有一次机会,可以给此变量a赋值的位置: 声明的同时赋值
匿名代码块中赋值
【修饰成员变量-静态成员变量】

public class Person{
private static final int a;
}
只有一次机会,可以给此变量a赋值的位置: 声明的同时赋值
静态代码块中赋值

【修饰引用变量】

main:
final Student s = new Student();
//编译通过
s.setName(“tom”);
s.setName(“zs”);
//编译报错,不能修改引用s指向的内存地址
s = new Student();

abstract修饰符
abstract修饰符可以用来修饰方法也可以修饰类,如果修饰方法,那么该方法就是抽象方法;如果修饰类,那么该类就是抽象类。
1、抽象类和抽象方法的关系
抽象类中可以没有抽象方法,但是有抽象方法的类一定要声明为抽象类。
2、语法

public abstract class Action{
public abstract void doSomething();
}
public void doSomething(){…}

"public void doSomething()"这部分是方法的声明
"{…}"这部分是方法的实现,如果大括号中什么都没写,就叫方法的空实现
声明类的同时,加上abstract修饰符就是抽象类
声明方法的时候,加上abstract修饰符,并且去掉方法的大口号,同时结尾加上分号,该方法就是抽象方法。
3、特点及作用
抽象类,不能使用new关键字来创建对象,它是用来让子类继承的。
抽象方法,只有方法的声明,没有方法的实现,它是用来让子类实现的。
注:子类继承抽象类后,需要实现抽象类中没有实现的抽象方法,否则这个子类也要声明为抽象类。

public abstract class Action{
public abstract void doSomething();
}
main:
//编译报错,抽象类不能new对象
Action a = new Action();

//子类继承抽象类
public class Eat extends Action{
//实现父类中没有实现的抽象方法
public void doSomething(){
//code
}
}
main:
Action a = new Eat();
a.doSomething();

注:子类继承抽象类,那么就必须要实现抽象类没有实现的抽象方法,否则该子类也要声明为抽象类。

思考1 : 抽象类不能new对象,那么抽象类中有没有构造器?

抽象类是不能被实例化,抽象类的目的就是为实现多态中的共同点,抽象类的构造器会在子类实例化时调 用,因此它也是用来实现多态中的共同点构造,不建议这样使用!

思考2 : 抽象类和抽象方法意义(为什么要编写抽象类、抽象方法)

打个比方,要做一个游戏。如果要创建一个角色,如果反复创建类和方法会很繁琐和麻烦。建一个抽象类
后。若要创建角色可直接继承抽象类中的字段和方法,而抽象类中又有抽象方法。如果一个角色有很多种
职业,每个职业又有很多技能,要是依次实例这些技能方法会显得想当笨拙。定义抽象方法,在需要时继
承后重写调用,可以省去很多代码。
总之抽象类和抽象方法起到一个框架作用。很方便后期的调用和重写
抽象方法是为了程序的可扩展性。重写抽象方法时即可实现同名方法但又非同目的的要求。

Java中的抽象类是一种特殊的类,它不能被实例化,只能被继承。抽象类通常用于定义一些抽象的方法,这些方法没有具体的实现,只有方法声明,而具体的实现则由子类来实现。抽象类的作用主要有以下几个方面:

  1. 定义规范:抽象类可以定义一些抽象的方法和属性,子类必须实现这些方法和属性,从而保证了子类的一致性和可维护性。
  2. 封装变化:抽象类可以封装具体的实现细节,子类只需要关注抽象方法的实现,而不需要关注具体的实现细节,从而降低了耦合度,增加了代码的可复用性。
  3. 继承扩展:抽象类可以作为其他具体类的父类,子类可以继承它的属性和方法,并根据需要扩展它的功能。
  4. 提高安全性:抽象类可以限制子类的行为,例如把某些方法或属性设置为私有或受保护的,从而提高了程序的安全性。

总的来说,抽象类是面向对象编程中非常重要的概念之一,它可以帮助我们更好地组织和设计程序,提高程序的可维护性、可扩展性和可重用性。


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月14日 0

暂无评论

推荐阅读
  xaeiTka4h8LY   2024年05月17日   56   0   0 数据库JavaSQL
  2iBE5Ikkruz5   2023年12月12日   94   0   0 JavaJavaredisredis
cEe6YWJIAuf2