疏漏:
私有方法不能重写,因为他不能在类本身之外访问。
易漏:
静态方法能继承,但是不能重写,父类的静态方法一旦在子类中被重新定义,那么父类中定义的方法将被隐藏。
来一个封装,继承的实例:
Triangle.java
package test; import java.util.*; public class Triangle extends GemetricObject { private double side1=1.0; private double side2=1.0; private double side3=1.0; public Triangle() {} public Triangle(double side1,double side2,double side3) { this.side1=side1; this.side2=side2; this.side3=side3; } public Triangle(String color,boolean filled,double side1,double side2,double side3) { super(color,filled); this.side1=side1; this.side2=side2; this.side3=side3; } public double getside1() { return side1;} public double getside2() { return side2;} public double getside3() { return side3;} public void setside1(){ this.side1=side1; } public void setside2(){ this.side2=side2; } public void setside3(){ this.side3=side3; } public double getArea() { double s = (side1 + side2 + side3) / 2; return Math.sqrt(s * (s - side1) * (s - side2) * (s - side3)); } public double getPerimeter() { return side1+side2+side3; } public String toString() { return "side1="+side1+"side2="+side2+"side3="+side3; } }
testTriangle.java
package test; import java.util.*; public class testTriangle { public static void main(String args[]) { Scanner input = new Scanner(System.in); System.out.println("please input data"); String color =input.nextLine(); boolean filled=input.nextBoolean(); double side1= input.nextDouble(); double side2= input.nextDouble(); double side3= input.nextDouble(); Triangle t= new Triangle(color,filled,side1,side2,side3); System.out.println(t.getArea()+" "+t.getPerimeter()+""+t.getcolor()+" "+t.getfilled()+" "+t.toString() ); } }
GemetricObject.java
package test; public class GemetricObject { protected String color; protected boolean filled; public GemetricObject() {} public GemetricObject(String color, boolean filled) { this.color=color; this.filled=filled; } public void setcolor() { this.color=color; } public void setfilled(){ this.filled=filled; } public boolean getfilled() { return filled; } public String getcolor() { return color; } }