面向抽象编程
public abstract class Geometry {
public abstract double getArea();
}
public class Pillar{
Geometry bottom; //bottom是抽象类Geometry声明变量
double height;
public Pillar(Geometry bottom,double height) {
this.bottom=bottom;
this.height=height;
}
public double getVolume() {
if(bottom==null){
System.out.println("没有底,无法计算体积");
return -1;
}
return bottom.getArea()*height; //bottom可以调用子类重写的getArea方法
}
}
public class Circle extends Geometry{
double r;
Circle(double r) {
this.r=r;
}
public double getArea() {
return (3.14*r*r);
}
}
public class Rectangle extends Geometry {
double a,b;
public Rectangle(double a,double b) {
this.a=a;
this.b=b;
}
public double getArea(){
return a*b;
}
}
public class Application {
public static void main(String[] args) {
Pillar pillar;
Geometry bottom=null;
pillar=new Pillar(bottom,10); //null底的柱体
System.out.println("体积"+pillar.getVolume());
bottom=new Rectangle(12,22);
pillar =new Pillar(bottom, 58); //pillar三具有矩形底的柱体
System.out.println("体积"+pillar.getVolume());
bottom =new Circle(10);
pillar=new Pillar(bottom, 58); //pillar是具有圆形底的柱体
System.out.println("体积"+pillar.getVolume());
}
}
public abstract class SIM {
public abstract void setNumber(String n);
public abstract String giveNumber();
public abstract String giveCorpName();
}
public class MobileTelephone {
SIM card;
public void useSIM(SIM card) {
this.card=card;
}
public void showMess() {
System.out.println("使用的卡是:"+card.giveCorpName()+"提供的");
System.out.println("手机号码是:"+card.giveNumber());
}
}
public class SIMOfChinaMobile extends SIM {
String number;
public void setNumber(String n) {
number=n;
}
public String giveNumber() {
return number;
}
public String giveCorpName() {
return "中国移动";
}
}
public class SIMOfChinaUnicom extends SIM {
String number;
public void setNumber(String n) {
number=n;
}
public String giveNumber() {
return number;
}
public String giveCorpName() {
return "中国联通";
}
}
public class Application {
public static void main(String[] args) {
MobileTelephone telephone=new MobileTelephone();
SIM sim=new SIMOfChinaMobile();
sim.setNumber("13887656432");
telephone.useSIM(sim);
telephone.showMess();
sim.setNumber("13097656437");
telephone.useSIM(sim);
telephone.showMess();
}
}
class A{
double f(double x,double y){
return x+y;
}
}
class B extends A{
double f(int x,int y){
return x*y;
}
}
public class exam {
public static void main(String[] args) {
B b=new B();
System.out.println(b.f(3, 5));
System.out.println(b.f(3.0, 5.0));
}
}
class A{
public int getNumber(int a) {
return a+1;
}
}
class B extends A{
public int getNumber(int a) {
return a+100;
}
}
public class exam1 {
public static void main(String[] args) {
A a=new A();
System.out.println(a.getNumber(10));
a=new B();
System.out.println(a.getNumber(10));
}
}
class A{
double f(double x,double y) {
return x+y;
}
static int g(int n){
return n*n;
}
}
class B extends A{
double f(double x,double y){
double m=super.f(x, y);
return m+x*y;
}
static int g(int n){
int m=A.g(n);
return m+n;
}
}
public class exam1 {
public static void main(String[] args) {
B b=new B();
System.out.println(b.f(10.0, 8.0));
System.out.println(b.g(3));
A a=new B();
System.out.println(a.f(10, 8.0));
System.out.println(a.g(3));
}
}
class A{
int m;
int getM(){
return m;
}
int seeM(){
return m;
}
}
class B extends A{
int m;
int getM(){
return m+100;
}
}
public class haha {
public static void main(String[] args) {
B b=new B();
b.m=20;
System.out.println(b.getM());
A a=b;
a.m=-100;
System.out.println(a.getM());
System.out.println(b.seeM());
}
}