1.palabra clave final
Se utiliza para declarar propiedades (variables miembro), métodos y clases.
1.1 asignación de atributos finales
- Asignar valor al mismo tiempo que la declaración, a menudo se usa junto con estático (después de su uso, solo habrá una copia en el área de método)
- No se asignan valores al declarar, los valores se deben asignar uno a uno en el constructor.
- Al crear cada objeto, el valor del atributo final es correcto
1.2 modificación final
Realice modificaciones finales a los parámetros: agregue la palabra clave final delante de los parámetros del método para evitar que los datos se modifiquen en el cuerpo del método.
ejemplo:
//final 修饰的类不可以被继承
public class FinalDemo {
//final+static 修饰的在方法区是唯一的
final static int num = 0;
final String name;
//每次创建的name都是唯一的
public FinalDemo(String name) {
this.name = name;
}
//final修饰的方法不可以重写
public final void first(){
System.out.println("我就是我,不一样的烟花");
}
public static void main(String[] args) {
FinalDemo finalDemo = new FinalDemo("小黑子");
System.out.println("我是"+finalDemo.name);
}
}
public class Final1 extends FinalDemo{
public Final1(String name) {
super(name);
}
}
public class Test {
public static void main(String[] args) {
FinalDemo finalDemo = new FinalDemo("鸡哥");
System.out.println("我的名字是"+finalDemo.name);
finalDemo.first();
Final1 final1 = new Final1("小红");
System.out.println("我的名字是"+final1.name);
final1.first();
}
}
resultado:
2. Interfaz
2.1 Definición de interfaz
Definición de interfaz: utilice la palabra clave interfaz para declarar una interfaz.
[Modificador de acceso] interfaz nombre de la interfaz [extiende otros nombres de interfaz 1,….otros nombres de interfaz n]
{
// Declarar método abstracto constante método estático método predeterminado
}
2.2 Uso de interfaces
Las clases implementan interfaces usando la palabra clave implements. En una declaración de clase, la palabra clave Implements se coloca después de la declaración de clase.
[Modificador de acceso] clase nombre de clase implementa nombre de interfaz 1, nombre de interfaz 2...{ }
Herencia combinada:
[Modificador de acceso] clase nombre de clase extiende el nombre de la clase principal implementa el nombre de la interfaz 1, nombre de la interfaz 2...{ }
2.3 Características de la interfaz
Características de la interfaz:
• Las interfaces son implícitamente abstractas. Al declarar una interfaz, no es necesario utilizar la palabra clave abstracta.
• Los métodos en las interfaces pueden ser abstractos, estáticos o predeterminados.
• Las propiedades declaradas en la interfaz son públicas estáticas finales de forma predeterminada.
• La interfaz no es heredada por la clase, sino implementada por la clase.
• Las interfaces no pueden crear instancias de objetos.
• Al igual que en la herencia, existe polimorfismo entre las interfaces y las clases de implementación.
• Una interfaz puede heredar varias otras interfaces.
• Cuando una clase implementa una interfaz, la clase debe implementar todos los métodos abstractos en la interfaz. De lo contrario, la clase debe declararse abstracta.
ejemplo:
public class Animal {
String name;
int age;
public void eat(){
}
}
public interface Run {
void run();
}
public interface Swim {
void swim();
public default void test1(){
//创建默认方法
System.out.println("默认方法");
}
public static void test2(){
System.out.println("静态方法");
}
}
public class Cat extends Animal implements Run,Swim {
@Override
public void run() {
System.out.println("小猫会跑");
}
@Override
public void swim() {
System.out.println("小猫会游泳");
}
}
public class Cow implements Run {
@Override
public void run() {
System.out.println("哞儿~,快跑");
}
}
public class Test {
public static void main(String[] args) {
Cat cat = new Cat();
cat.age=18;
System.out.println(cat.age);
cat.name="咪咪";
System.out.println(cat.name);
cat.eat();
cat.run();
cat.swim();
Run run = new Cat();
run.run();
Swim swim = new Cat();
swim.swim();
Swim.test2();
//静态方法通过接口名访问
cat.test1();
//默认方法通过子类创建的对象访问
}
}