java基础练习继承
编写一个类A,该类创建的对象可以调用方法f输出小写的英文字母表。然
后再编写一个A类的子类B,要求子类B必须继承类A的方法f(不允许重写),
子类B创建的对象不仅可以调用方法f输出小写的英文字母表,而且可以调用子
类新增的方法g输出大写的英文字母表。最后编写主类C,在主类的main方法
中测试类A与类B。
package lianxi; public class A { public void f() { System.out.println("小写字母表"); for(char c='a';c<='z';c++) { System.out.print(c+" "); } System.out.println(); } }
package lianxi; public class B extends A { public void g() { System.out.println("大写字母表"); for(char c='A';c<='Z';c++) { System.out.print(c+" "); } System.out.println(); } }
package lianxi; public class C { public static void main(String[] args) { B b=new B(); b.f(); b.g(); } }
实现一个名为Person的类和它的子类Employee,Employee有两个子类Faculty
和Staff。
具体要求如下:
(1)Person类中的属性有:姓名name(String类型),地址address(String类型),
电话号码telphone(String类型)和电子邮件地址email(String类型);
(2)Employee类中的属性有:办公室office(String类型),工资wage(double
类型),受雇日期hiredate(String类型);
(3)Faculty类中的属性有:学位degree(String类型),级别level(String类型);
(4)Staff类中的属性有:职务称号duty(String类型)。
package lianxi; public class Person { private String name; private String address; private String telphone; private String email; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } public String getTelphone() { return telphone; } public void setTelphone(String telphone) { this.telphone = telphone; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public Person(String name, String address, String telphone, String email) { super(); this.name = name; this.address = address; this.telphone = telphone; this.email = email; } }
package lianxi; public class Employee extends Person { private String office; private double wage; private String hiredate; public Employee(String name, String address, String telphone, String email, String office, double wage, String hiredate) { super(name, address, telphone, email); this.office = office; this.wage = wage; this.hiredate = hiredate; } public String getOffice() { return office; } public void setOffice(String office) { this.office = office; } public double getWage() { return wage; } public void setWage(double wage) { this.wage = wage; } public String getHiredate() { return hiredate; } public void setHiredate(String hiredate) { this.hiredate = hiredate; } }
package lianxi; public class Faculty extends Employee { private String degree; private String level; public Faculty(String name, String address, String telphone, String email, String office, double wage, String hiredate, String degree, String level) { super(name, address, telphone, email, office, wage, hiredate); this.degree = degree; this.level = level; } public String getDegree() { return degree; } public void setDegree(String degree) { this.degree = degree; } public String getLevel() { return level; } public void setLevel(String level) { this.level = level; } }
package lianxi; public class Staff extends Employee { private String duty; public Staff(String name, String address, String telphone, String email, String office, double wage, String hiredate, String duty) { super(name, address, telphone, email, office, wage, hiredate); this.duty = duty; } public String getDuty() { return duty; } public void setDuty(String duty) { this.duty = duty; } }
24.编写一个Car类,具有final类型的属性品牌,具有功能drive;
定义其子类Aodi和Benchi,具有属性:价格、型号;具有功能:变速;
定义主类E,在其main方法中分别创建Aodi和Benchi的对象并测试对象的特
性。
package lianxi; public class Car { final String pinpai="品牌"; public void drive() { System.out.println("pinpai"+"开车"); } }
package lianxi; public class Aodi extends Car { private double price; private String xinghao; public double getPrice() { return price; } public void setPrice(double price) { this.price = price; } public String getXinghao() { return xinghao; } public void setXinghao(String xinghao) { this.xinghao = xinghao; } public Aodi(double price, String xinghao) { super(); this.price = price; this.xinghao = xinghao; } public void drive() { System.out.println("Aodi"+"型号"+xinghao+"价格"+price); System.out.println("Aodi变速"); } }
package lianxi; public class Benchi extends Car { private double price; private String xinghao; public double getPrice() { return price; } public void setPrice(double price) { this.price = price; } public String getXinghao() { return xinghao; } public void setXinghao(String xinghao) { this.xinghao = xinghao; } public Benchi(double price, String xinghao) { super(); this.price = price; this.xinghao = xinghao; } public void drive() { System.out.println("Benchi"+"型号"+xinghao+"价格"+price); System.out.println("Benchi变速"); } }
package lianxi; public class E { public static void main(String[] args) { Aodi a=new Aodi(100000,"100"); a.drive(); Benchi b=new Benchi(100000,"100"); b.drive(); } }
按要求编写一个Java应用程序:
(1)编写一个矩形类Rect,包含:
两个protected属性:矩形的宽width;矩形的高height。
两个构造方法:
1.一个带有两个参数的构造方法,用于将width和height属性初化;
2.一个不带参数的构造方法,将矩形初始化为宽和高都为10。
两个方法:
求矩形面积的方法area()
求矩形周长的方法perimeter()
(2)通过继承Rect类编写一个具有确定位置的矩形类PlainRect,其确定位置用
矩形的左上角坐标来标识,包含:
添加两个属性:矩形左上角坐标startX和startY。
两个构造方法:
带4个参数的构造方法,用于对startX、startY、width和height属性
初始化;
不带参数的构造方法,将矩形初始化为左上角坐标、长和宽都为0
package lianxi; public class Rect { protected int width; protected int hight; public Rect(int width, int hight) { super(); this.width = width; this.hight = hight; } public Rect() { width=10; hight=10; } public int area() { return width*hight; } public int perimeter() { return (width+hight)*2; } }
package lianxi; public class PlainRect extends Rect { private int startX; private int startY; public int getStartX() { return startX; } public void setStartX(int startX) { this.startX = startX; } public int getStartY() { return startY; } public void setStartY(int startY) { this.startY = startY; } public PlainRect(int width, int hight, int startX, int startY) { super(width, hight); this.startX = startX; this.startY = startY; } public PlainRect() { startX =0; startY =0; hight =0; width =0; } public boolean isInside(double x,double y) { if(x>=startX&&x<=(startX+width)&&y<startY&&y>=(startY-hight)) return true; else return false; } }
package lianxi; public class TestRect { public static void main(String[] args){ PlainRect p=new PlainRect(10,20,10,10); System.out.println("面积是"+p.area()); System.out.println("周长是"+p.perimeter()); System.out.println("点(25.5,13)"+(p.isInside(25.5, 13)?"在":"不在")+"此矩形内"); } }