疏漏:
私有方法不能重写,因为他不能在类本身之外访问。
易漏:
静态方法能继承,但是不能重写,父类的静态方法一旦在子类中被重新定义,那么父类中定义的方法将被隐藏。
来一个封装,继承的实例:
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;
}
}