java繼承和抽象類

下面有幾個具有針對性的題型來更好理解繼承的概念:
1、分析下列程序的運行結果,然後編譯、執行。

class Pet{
protected String name;
public Pet(String n){
name = n;
}
public String getName(){
return name;
}
public String move(){
return "run";
}
public String speak(){
return "";
}
public String toString(){
return "My pet " + name;
}
}
class Dog extends Pet{
protected int weight;
public Dog(String s){
super(s);
}
}
class PetTest{
public static void main(String[] args){
Pet myPet = new Pet("George");
Dog myDog = new Dog("Spot");
System.out.println(myPet.toString() + "\n" + "Speak: " + 
myPet.speak() +"\n" + myPet.move() + " " + 
myPet.getName() + "\n");
System.out.println(myDog.toString() + "\n" + "Speak: " + 
myDog.speak() +"\n" + myDog.move() + " " +myDog.getName() + "\n");
}
}
  1. 修改Dog類的構造函數,使之可以初始化Dog類中的weight值。
public Dog(String s){
		super(s);
		}

改成:

public Dog(String s,int weight){
			super(s);
			this.weight=weight;
			}
	
  1. 在Dog類中添加方法getWeight以獲得其weight值。
public int getWeight() {
			return weight;
		}
		public void setWeight(int weight) {
			this.weight = weight;
		}


  1. 修改類PetTest中的main方法,使用新的構造函數創建一個名爲“snoopy”,重爲10的Dog類的對象,並利用其方法輸出包括重量在內的各項值
    修改後:
    Dog snoopy = new Dog("Spot",10); 在這裏插入圖片描述
  2. 要使Dog類對象的speak()方法返回值爲“Woof Woof”,應如何做?
    在這裏插入圖片描述
    2、按照要求完成程序:
  3. 第一個類是圖形類(Shape),含有一個成員變量color(字符串類型),一個沒有參數的構造方法,以及一個有一個字符串類型參數的構造方法來初始化顏色變量,還有一個返回顏色變量值的成員方法show,以及一個抽象方法getArea獲取面積,返回值爲double類型;
public abstract class Shape {
      String color;
      //沒有參數的構造方法
      public Shape(){
    	  
      }
      //構造方法來初始化顏色變量
      public Shape(String color){
    	  this.color=color;
    	  
      }
      //返回的成員方法
      public String show(){
		return color;
    	  
      }
      //抽象方法getArea獲取面積
      public abstract double getArea();
    	  
      
    	 
}


  1. 第二個類是圓形類(Circle)繼承自圖形類,含有一個成員變量半徑r,有一個有兩個參數的構造方法,來初始化顏色和半徑,一個方法getArea,返回值爲double,獲取圓的面積值。
public class Circle extends Shape{
	//成員變量半徑r
	double r;
	//構造方法初始化顏色和半徑
	public Circle(String color,double r) {
		super(color);
		this.r=r;
		
	}
//獲取圓的面積值
	@Override
	public double getArea() {
		
		double area;
		area=r*r*3.14;
		return area;
	}

}
  1. 第三個類是矩形類(Rectangle)繼承自圖形,含有兩個double類型的成員變量長a和寬b,有一個有三個參數的構造方法,來初始化顏色、長和寬,一個方法getArea,返回值爲double,獲取矩形的面積值。
public  class Rectangle extends Shape{
	//成員變量長a和寬b
	double a,b;
	//三個參數的構造方法
	public Rectangle(String color,double a,double b){
		super(color);
		this.a=a;
		this.b=b;
	}
  //獲取矩形的面積值
	@Override
	public double getArea() {
		double area;
		area=a*b;
		return area;
	}


  1. 第四個類是測試類(TestShape),分別定義圓形類和矩形類的實例對象,並用show方法,getArea方法來測試自己的定義
public class TestShape {

	public static void main(String[] args) {
		//分別定義圓形類和矩形類的實例對象
		Shape circle=new Circle("紅色",10);
		Shape rectangle=new Rectangle("藍色",8,5);
		System.out.println(circle.show());
		System.out.println(circle.getArea());
		System.out.println(rectangle.show());
		System.out.println(rectangle.getArea());
	}

}

`測試結果:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章