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("望着农药真好玩!");
}
}