Java笔试--代码纠错

package practice.javase;
public abstract class Name {
       private String name;
       public abstract boolean isStupidName(String name){};
}

错误:编译无法通过,原因抽象方法不能有方法体;改正,将抽象方法改为普通方法,或去掉方法体;

package practice.javase;
public abstract class Name {
       private String name;
       public abstract boolean isStupidName(String name);;
}
package practice.javase;
public abstract class Name {
       private String name;
       public boolean isStupidName(String name){
              return false;};
}

package practice.javase;
public class Something {
       void doSomething(){
              private String s = "";
              int l = s.length();
       }
}

错误:编译无法通过,原因局部变量不能有权限修饰符,权限修饰符是为了设置访问权限而设定的,局部变量的访问权限已经确定是在方法体内了,故错误,改正,去掉权限修饰符;

package practice.javase;
public class Something {
       void doSomething(){
              String s = "";
              int l = s.length();
       }
}

package practice.javase;
public abstract class Something1 {
       private abstract String doSomething();
}

错误:编译无法通过,原因抽象类中的抽象方法是要被其子类继承和重写的,所以权限只能是public或者protected,或者默认权限,不能使private,private不能被其他类访问,和抽象本意冲突,没有意义;

package practice.javase;
public abstract class Something1 {
       abstract String doSomething();
}

package practice.javase;
public class Something2 {
       public static void main(String[] args) {
              Something2 something2 = new Something2();
              something2.doString();
              System.out.println("something2.doString return"+doString());
       }
       
       public String doString(){
              return "Do SomeString.....";
       }
}

错误:静态方法中不能调用非静态的方法或成员变量,如果想调用,只能通过对象调用,因为他是实例方法不是类方法;

package practice.javase;
public class Something2 {
       public static void main(String[] args) {
              Something2 something2 = new Something2();
              something2.doString();
              System.out.println("something2.doString return"+something2.doString());
       }
       
       public String doString(){
              return "Do SomeString.....";
       }
}

此处Somestring3类的文件名是OtherString.java
package practice.javase;
public class Something3 {
       private static void main(String[] something_to_do){
              System.out.println("Do Something....");
       }
}

错误:这段代码编译不会报错,但是我们注意一个问题Somestring3类的文件名是OtherString.java,那么就一定不正确,java的机制是编译后生成.java文件,解释器解释成二进制文件

package practice.javase;
public class OtherString {
       private static void main(String[] something_to_do){
              System.out.println("Do Something....");
       }
}

package practice.javase;
public interface A {
       int x = 0;
}
package practice.javase;
public class B {
       int x = 1;
}
package practice.javase;
public class C extends B implements A{
       public void pX(){
              System.out.println(x);
       }
       public static void main(String[] args) {
              new C().pX();
       }
}

Class C编译报错:
接口的含义理解:接口可以理解成统一的"协议",而接口中的属性也属于协议中的内容;但是接口的属性都是公共的,静态的,最终的
接口的成员特点:
A:成员变量 只能是常量。默认修饰符 public static final
B:成员方法 只能是抽象方法。默认修饰符 public abstract
推荐:永远手动给出修饰符。
在Class C中继承了B,继承了B中非私有的方法和属性,但要通过super关键字来调用父类中的成员变量和方法;

package practice.javase;
public class C extends B implements A{
       public void pX(){
              System.out.println(super.x);
       }
       public static void main(String[] args) {
              new C().pX();
       }
}

package practice.javase;
public interface Playable {
       void play();
}

package practice.javase;
public interface Bounceable {
       void play();
}

package practice.javase;
public interface Rollable extends Playable, Bounceable{
       Ball ball = new Ball("PingPang");
}

package practice.javase;
public class Ball implements Rollable{
       private String name;
       public Ball(String name) {
              super();
              this.name = name;
       }
       public String getName() {
              return name;
       }
       
       public void play(){
              ball = new Ball("FootBall");
              System.out.println(ball.getName());
       }
       
}

错误:编译错误,错误在ball = new Ball("FootBall");,变量未经声明,
package practice.javase;
public class Ball implements Rollable{
       private String name;
       public Ball(String name) {
              super();
              this.name = name;
       }
       public String getName() {
              return name;
       }
       
       public void play(){
              Ball ball = new Ball("FootBall");
              System.out.println(ball.getName());
       }
       
}

原文地址:https://www.cnblogs.com/lin-jing/p/7241621.html