重慶分公司,新征程啟航
為企業提供網站建設、域名注冊、服務器等服務
為企業提供網站建設、域名注冊、服務器等服務
JAVA中一個抽象類抽象方法繼承與對象多態性的例子
專業從事成都網站建設、成都網站設計,高端網站制作設計,小程序制作,網站推廣的成都做網站的公司。優秀技術團隊竭力真誠服務,采用HTML5+CSS3前端渲染技術,自適應網站建設,讓網站在手機、平板、PC、微信下都能呈現。建站過程建立專項小組,與您實時在線互動,隨時提供解決方案,暢聊想法和感受。
面向對象的三大特點:封裝,繼承,多態。
在JAVA中我們總是盡可能地讓一個類繼承一個抽象類,這樣大大的節省代碼方便開發。
一個繼承與對象多態性的例子:聲明一個Person 類。Student 類,Worker類分別繼承Person。
人有姓別,年齡,學生有特有的成績屬性,工人有特有的工資。
所有屬性都用private封裝
abstract class Person{
private String name;
private int age;
public Person(String name,int age){
this.setName(name);
this.setAge(age);
}
public void setName(String name){
this.name=name;
}
public void setAge(int age){
this.age=age;
}
public String getName(){
return this.name;
}
public int getAge(){
return this.age;
}
public void say(){
System.out.println(this.getContent());
}
public abstract String getContent();
}
class Worker extends Person{
private float salary;
public Worker(String name,int age,float salary){
super(name,age);
this.setSalary(salary);
}
public void setSalary(float salary){
this.salary=salary;
}
public float getSalary(){
return this.salary;
}
public String getContent(){
return "工人信息------姓名:"+super.getName()+",年齡:"+super.getAge()+",工資:"+this.getSalary();
}
}
class Student extends Person{
private float score;
public Student(String name,int age,float score){
super(name,age);
this.setScore(score);
}
public void setScore(float score){
this.score=score;
}
public float getScore(){
return this.score;
}
public String getContent(){
return "學生信息------姓名:"+super.getName()+", 年齡:"+super.getAge()+",成績:"+this.getScore();
}
}
public class OODemo11{
public static void main(String []args){
Person p=null;
p=new Student("張三",23,90);
p.say();
p=new Worker("李師傅",26,3000);
p.say();
}
}
運行結果:
學生信息------姓名:張三, 年齡:23,成績:90.0
工人信息------姓名:李師傅,年齡:26,工資:3000.0
Java繼承是使用已存在的類的定義作為基礎建立新類的技術,新類的定義可以增加新的數據或新的功能,也可以用父類的功能,但不能選擇性地繼承父類。
java多態存在的三個必要條件:
1.需要有繼承關系的存在
2.需要有方法的重寫
3.需要有父類的引用指向子類對象
希望對你有幫助。
第一題應該選D,第二題選C,D。
第一題屬于多態,methodB()方法屬于子類,父類沒有重寫子類的方法
第二題屬于繼承,子類可以繼承父類的方法
package javaapplication4;
public class Rect {
protected int length;/////這個地方不能變成私有屬性,因為后面繼承的類也需要繼承它。
protected int width;
public Rect(int length,int width)
{
this.length=length;
this.width=width;
}
public void setLength(int length)
{this.length=length;br }
public void setWidth(int width)
{this.width=width;br }
public int getLength()
{return length;br }
public int getWidth()
{return width;br }
public int getArea()
{return length*width;br }
public int getCycle()
{return (length+width)*2;br }}
////////////////////////////////////////////////////////////////////////////////////////////////////////
package javaapplication4;
public class PlainRect extends Rect
{///此類并未繼承父類的長寬屬性,所以父類的設計是不合理的。應將其屬性改為protected.
protected int startX,startY;
public PlainRect(int length,int width,int startx,int starty)
{
super(length,width);
startX=startx;
startY=starty;
}
public PlainRect()
{
super(0,0);
startX=0;
startY=0;
}
public boolean isInside(double x,double y)
{
boolean b=false;
if(xstartXxstartX+length)
if(ystartYystartY+width)
b=true;
return b; }}
////////////////////////////////////////////////////////////////////////////////////////////////////////
package javaapplication4;
public class Main {
public static void main(String[] args) {
PlainRect Pr1=new PlainRect(20,10,10,10);
System.out.println("面積為:"+Pr1.getArea());
System.out.println("周長為:"+Pr1.getCycle());
System.out.println("點(25.5,13)"+(Pr1.isInside(25.5, 13)?"在":"不在")+"此方形內");
} }
public?class?PhoneDemo?{
public?static?void?main(String[]?args)?{
Phone?p1=new?OldPhone();
Phone?p2=new?NewPhone();
show(p1);
System.out.println("\n----------分割線-----------\n");
show(p2);
}
private?static?void?show(Phone?p)?{
p.call();
p.message();
if(p?instanceof?Iplay)?{
((Iplay)?p).game();
}
}
}
class?Phone{
public?void?call(){
System.out.println("古董---Call....");
}
public?void?message()?{
System.out.println("古董---message....");
}
}
interface?Iplay{
public?void?game();
}
class?OldPhone?extends?Phone{
}
class?NewPhone?extends?Phone?implements?Iplay{
public?void?call(){
System.out.println("時尚---Call....");
}
public?void?message()?{
System.out.println("時尚---message....");
}
public?void?game()?{
System.out.println("望著農藥真好玩!");
}
}