Java中的String类能否被继承?为什么?以及final和static的区
别
不能被继承,因为String类有final修饰符,⽽final修饰的类是不能被继承的。
Java对String类的定义:
public final class String implements java.io.Serializable, Comparable<String>, CharSequence {
// 省略...
}
final修饰符的⽤法:
1.修饰类
当⽤final修饰⼀个类时,表明这个类不能被继承。final类中的成员变量可以根据需要设为final,但是要注意final类中的所有成员⽅法都会被隐式地指定为final⽅法。
2.修饰⽅法
使⽤final修饰⽅法的原因有两个。第⼀个原因是把⽅法锁定,以防任何继承类修改它的含义;第⼆个原因是效率。在早期的Java实现版本中,会将final⽅法转为内嵌调⽤。但是如果⽅法过于庞⼤,可能看不到内嵌调⽤带来的任何性能提升。在最近的Java版本中,不需要使⽤final⽅法进⾏这些优化了。
注:⼀个类中的private⽅法会隐式地被指定为final⽅法。
3.修饰变量
对于被final修饰的变量,如果是基本数据类型的变量,则其数值⼀旦在初始化之后便不能更改;如果是引⽤类型的变量,则在对其初始化之后便不能再让其指向另⼀个对象。虽然不能再指向其他对象,但是它指向的对象的内容是可变的。
static的⽤法
Static修饰的成员属性和成员⽅法是和类相关的,没有Static修饰的成员⽅法和属性是和对象相关的。
Static修饰的成员变量属于全局变量,所有对象共享这个成员变量。(⽤类名调⽤)
public class Person {
//对象共有的属性
static修饰的变量static String address;
//每个对象根据实际情况拥有属性
public String name;
public int age;
public void show(){
System.out.println(this.age+" "+this.name+" "+this.address);
}
}
public static void main(String[] args) {
Person.address="中国";
Person p1=new Person();
p1.age=11;
p1.name="lili";
p1.show();
Person p2 =new Person();
p2.name="xiaohong";
p2.age=12;
p2.show();
}
Static修饰的成员⽅法内部只能⽤Static修饰的变量和⽅法。
Static修饰的代码块,是在类加载时使⽤。因为虚拟机对类只加载⼀次,在构造⽅法之前执⾏。
public class Person {
static
{
System.out.println("执⾏静态代码块");
}
//对象共有的属性
static String address;
//每个对象根据实际情况拥有属性
public String name;
public int age;
public void show(){
Person.run();
System.out.println(this.age+" "+this.name+" "+this.address); }
public static void run(){
//static⽅法中不能使⽤⾮static属性和⽅法
System.out.println("跑步能锻炼⾝体!"); //name报错,不能使⽤ }
}
public static void main(String[] args) {
Person p1=new Person();
p1.age=11;
p1.name="lili";
p1.show();
Person p2 =new Person();
p2.name="xiaohong";
p2.age=12;
p2.show();
}
静态⽅法⾥不能⽤this关键字。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论