欢迎光临散文网 会员登陆 & 注册

2023.3.30-Java-接口和抽象类

2023-03-30 22:56 作者:紧扣的dagger  | 我要投稿


Main.java

public class Main {
   public static void main(String[] args) {
       demo sample1 = new demo();
       sample1.list();
       sample1.print();

       testDemo sample2 = new testDemo();
       sample2.method1();
       sample2.method2();
       System.out.println(sample2.sqrt(3.14)+sample2.calcircle()+sample2.calarea());

       Crocodile sample3 = new Crocodile();
       sample3.waterDo();

       Outer outer = new Outer();
       outer.print();
   }

}

abstract class Demoo implements calrect{
   String name;
   abstract void method1();
   abstract void method2();
}

class testDemo extends Demoo{
   @Override
   void method1() {
       System.out.println("method 1");
   }

   @Override
   void method2() {
       System.out.println("method 2");
   }

   @Override
   public int calarea() {
       return 0;
   }

   @Override
   public double calcircle() {
       return 0;
   }
}


interface OnEarthFunc{
   void earthDo();
}
interface InWaterFunc{
   void waterDo();
}
interface OnAirFunc{
   void airDo();
}

class Vulture implements OnEarthFunc, OnAirFunc{
   public void earthDo(){}
   public void airDo(){}
}

class Crocodile implements OnEarthFunc, InWaterFunc{
   public void earthDo(){System.out.println("Crocodile on earth!");}
   public void waterDo(){System.out.println("Crocodile in water!");}
}

interface func{
   void print();
}
interface show extends func{
   void list();
}

class demo implements show{
   public void print(){
       System.out.println("print");
   }
   public void list(){
       System.out.println("list");
   }
}

class Outer{
   private int index=10;
   class Inner{
       private int index=20;
       void print() {
           int index = 30;
           System.out.println(this);
           System.out.println(Outer.this);
           System.out.println(index);
           System.out.println(this.index);
           System.out.println(Outer.this.index);
       }
   }
   void print(){
       Inner inner = new Inner();
       inner.print();
   }
}

/*
抽象类给所有由它派生出来的类创建一个公共的接口。
抽象类和接口,引入是为了解决没有多继承的问题。
抽象类不能被实例化。
一个类通过继承接口,以继承接口的抽象方法。

接口像一个插销,写在以接口名命名的.java文件里,然后,插到我的main类里面。
接口的变量,默认为public static final的。接口的方法都是public abstract的,只有说明没有定义。
不过,从java 8开始,允许给接口添加一个非抽象的方法实现。不过要使用default关键字。
Java 9可以:常量、抽象方法、默认方法、静态方法、私有方法、私有静态方法。

为了把接口插进类里面,类必须声明实现接口(implements),按指定参数个数类型返回。
接口的实现:
1. 静态方法,只能使用接口名称调用;
2. default方法属于实现接口的类的对象方法;
……

一般的应用里,最顶层的是接口,然后是抽象类实现接口,最后才到具体类实现。
接口--implements-->抽象类--extends-->具体类

final修饰符的作用:防止方法的重写或者类的继承。

内部类。
匿名类(创建一个类的对象,无需用到名字)直接new classname(){};。
可以用匿名类实现接口,new interfacename(){};
匿名内部类的编译后命名规则:outerclass.$n.class,n从1开始。
用一次就丢弃的类,所以不需要名字(哭)。

Java API提供了很多类和方法,直接调用(e. g. ……)

·Math类

包(需要import)
·java.lang
·java.io
·java.util

*/

calrect.java

public class Main {
   public static void main(String[] args) {
       demo sample1 = new demo();
       sample1.list();
       sample1.print();

       testDemo sample2 = new testDemo();
       sample2.method1();
       sample2.method2();
       System.out.println(sample2.sqrt(3.14)+sample2.calcircle()+sample2.calarea());

       Crocodile sample3 = new Crocodile();
       sample3.waterDo();

       Outer outer = new Outer();
       outer.print();
   }

}

abstract class Demoo implements calrect{
   String name;
   abstract void method1();
   abstract void method2();
}

class testDemo extends Demoo{
   @Override
   void method1() {
       System.out.println("method 1");
   }

   @Override
   void method2() {
       System.out.println("method 2");
   }

   @Override
   public int calarea() {
       return 0;
   }

   @Override
   public double calcircle() {
       return 0;
   }
}


interface OnEarthFunc{
   void earthDo();
}
interface InWaterFunc{
   void waterDo();
}
interface OnAirFunc{
   void airDo();
}

class Vulture implements OnEarthFunc, OnAirFunc{
   public void earthDo(){}
   public void airDo(){}
}

class Crocodile implements OnEarthFunc, InWaterFunc{
   public void earthDo(){System.out.println("Crocodile on earth!");}
   public void waterDo(){System.out.println("Crocodile in water!");}
}

interface func{
   void print();
}
interface show extends func{
   void list();
}

class demo implements show{
   public void print(){
       System.out.println("print");
   }
   public void list(){
       System.out.println("list");
   }
}

class Outer{
   private int index=10;
   class Inner{
       private int index=20;
       void print() {
           int index = 30;
           System.out.println(this);
           System.out.println(Outer.this);
           System.out.println(index);
           System.out.println(this.index);
           System.out.println(Outer.this.index);
       }
   }
   void print(){
       Inner inner = new Inner();
       inner.print();
   }
}

/*
抽象类给所有由它派生出来的类创建一个公共的接口。
抽象类和接口,引入是为了解决没有多继承的问题。
抽象类不能被实例化。
一个类通过继承接口,以继承接口的抽象方法。

接口像一个插销,写在以接口名命名的.java文件里,然后,插到我的main类里面。
接口的变量,默认为public static final的。接口的方法都是public abstract的,只有说明没有定义。
不过,从java 8开始,允许给接口添加一个非抽象的方法实现。不过要使用default关键字。
Java 9可以:常量、抽象方法、默认方法、静态方法、私有方法、私有静态方法。

为了把接口插进类里面,类必须声明实现接口(implements),按指定参数个数类型返回。
接口的实现:
1. 静态方法,只能使用接口名称调用;
2. default方法属于实现接口的类的对象方法;
……

一般的应用里,最顶层的是接口,然后是抽象类实现接口,最后才到具体类实现。
接口--implements-->抽象类--extends-->具体类

final修饰符的作用:防止方法的重写或者类的继承。

内部类。
匿名类(创建一个类的对象,无需用到名字)直接new classname(){};。
可以用匿名类实现接口,new interfacename(){};
匿名内部类的编译后命名规则:outerclass.$n.class,n从1开始。
用一次就丢弃的类,所以不需要名字(哭)。

Java API提供了很多类和方法,直接调用(e. g. ……)

·Math类

包(需要import)
·java.lang
·java.io
·java.util

*/

终端输出


D:\SoftwareSet\Java\JDK19\jdk-19.0.2\bin\java.exe "-javaagent:D:\SoftwareSet\Java\javaIDE(jetbrains)\installPath\IntelliJ IDEA Community Edition 2022.3.2\lib\idea_rt.jar=40628:D:\SoftwareSet\Java\javaIDE(jetbrains)\installPath\IntelliJ IDEA Community Edition 2022.3.2\bin" -Dfile.encoding=UTF-8 -Dsun.stdout.encoding=UTF-8 -Dsun.stderr.encoding=UTF-8 -classpath D:\AllData\mess\2023_Java_lecture\上课抄代码\2023年3月30日\untitled\out\production\untitled Main

list

print

method 1

method 2

1.772004514666935

Crocodile in water!

Outer$Inner@10f87f48

Outer@b4c966a

30

20

10


Process finished with exit code 0


2023.3.30-Java-接口和抽象类的评论 (共 条)

分享到微博请遵守国家法律