Java default关键字
Java default关键字是访问修饰符。如果您没有为变量,方法,构造函数和类分配任何访问修饰符,默认情况下,它将被视为默认访问修饰符。
要记住的要点
default访问修饰符只能在程序包中访问。
与private和protected不同,我们可以通过不向其分配任何访问修饰符来创建默认的外部类。在这种情况下,不限于采用类似于程序名称的类名称。
如果您要覆盖任何方法,则被覆盖的方法(即在子类中声明的方法)必须没有更多限制。因此,不允许默认方法或变量使用私有访问修饰符。
default关键字示例
示例1
让我们看一个示例,以确定default变量是否可访问或不在包装之外。
package com.java;
public class A {
String msg="try to access default variable outside the package";
}
//save by DefaultExample1.java
package com.lidihuo;
import com.java.A;
public class DefaultExample1 {
public static void main(String[] args) {
A a=new A();
System.out.println(a.msg);
}
}
输出:
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
The field A.msg is not visible
示例2
让我们看一个示例,以确定是否可以在包内的类外部访问default变量。
class A {
String msg="try to access the default variable outside the class within the package";
}
public class DefaultExample2 {
public static void main(String[] args) {
A a=new A();
System.out.println(a.msg);
}
}
输出:
Try to access the default variable outside the class within the package
示例3
让我们看一个示例,以确定在程序包外部是否可以访问默认方法。
//save by A.java
package com.java;
public class A {
void msg()
{
System.out.println("try to access default method outside the package ");
}
}
//save by DefaultExample2.java
package com.lidihuo;
import com.java.A;
public class DefaultExample2 {
public static void main(String[] args) {
A a=new A();
a.msg();
}
}
输出:
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
The method msg() from the type A is not visible
示例4
让我们看一个示例,该示例确定默认方法是否可以使用继承在程序包外部访问。
//save by A.java
package com.java;
public class A {
void msg()
{
System.out.println("try to access default method outside the package using inheritance");
}
}
//save by DefaultExample4.java
package com.lidihuo;
import com.java.A;
public class DefaultExample4 extends A {
public static void main(String[] args) {
DefaultExample4 a=new DefaultExample4();
a.msg();
}
}
输出:
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
The method msg() from the type A is not visible
示例5
让我们看一个确定我们是否使用默认外部类的示例。
class DefaultExample5 {
void display() {
System.out.println("try to access outer default class");
}
public static void main(String[] args) {
DefaultExample5 p=new DefaultExample5();
p.display();
}
}
输出:
Try to access outer default classs
示例6
让我们看一个示例,以确定我们是否从类外部创建默认构造函数的实例。
package com.java;
public class A {
String msg;
A(String msg) {
this.msg=msg;
}
public void display() {
System.out.println(msg);
}
}
//save by DefaultExample6.java
package com.lidihuo;
import com.java.A;
public class DefaultExample6 {
public static void main(String[] args) {
A a=new A("try to create the instance of default constructor outside the package");
a.display();
}
}
输出:
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
The constructor A(String) is not visible
示例7
让我们看一个示例,以确定是否使用默认访问修饰符将默认方法重写为子类。
class A {
void msg() {
System.out.println("try it");
}
}
//save by DefaultExample7.java
class DefaultExample1 extends A {
void msg() {
System.out.println("try to access the overridden method");
}
public static void main(String[] args) {
DefaultExample7 p=new DefaultExample7();
p.msg();
}
}
输出:
Try to access the overridden method
示例8
让我们看一个示例,以确定是否使用私有访问修饰符将默认方法重写为子类。
class A {
void msg() {
System.out.println("try it");
}
}
class DefaultExample8 extends A {
private void msg() {
System.out.println("try to access the overridden method");
}
public static void main(String[] args) {
DefaultExample8 p=new DefaultExample8();
p.msg();
}
}
输出:
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
Cannot reduce the visibility of the inherited method from A
示例9
让我们看一个示例,以确定是否使用默认访问修饰符将默认方法重写为子类。
class A {
void msg() {
System.out.println("try it");
}
}
class DefaultExample9 extends A {
protected void msg() {
System.out.println("try to access the overridden method");
}
public static void main(String[] args) {
DefaultExample9 p=new DefaultExample9();
p.msg();
}
}
输出:
Try to access the overridden method
示例10
让我们看一个示例,以确定是否使用公共访问修饰符将默认方法重写为子类。
class A {
void msg() {
System.out.println("try it");
}
}
class DefaultExample10 extends A {
public void msg() {
System.out.println("try to access the overridden method");
}
public static void main(String[] args) {
DefaultExample10 p=new DefaultExample10();
p.msg();
}
}
输出:
Try to access the overridden method