A. 继承体现的是类与类之间的"is-a"关系
B. 通过继承,子类可以直接访问父类中所有的属性和方法????私有的不可以访问
C. Java 中的继承是单继承的关系
D. 父类是子类共性的提取
A. 子类中的方法名必须和父类中方法名相同
B. 子类中的方法参数列表和父类的不同??参数列表必须相同
C. 子类中的方法返回值类型和父类相同
D. 父类的方法访问修饰符和子类中的相同或是更宽????子类的相同或更宽
A. 一个子类可以有多个直接的父类,一个父类也可以有多个直接的子类????子类只能有一个直接父类
B. 一个子类可以有多个直接的父类,但是一个父类只可以有一个直接的子类
C. 一个子类只能有一个直接的父类,但是一个父类可以有多个直接的子类
D. 以上说法都不对
A. 编译通过
B. 编译不通过,应把第 11?行改成 super.valu?e = value;
C. 编译不通过,应把第 11?行改成 super(value);
D. 编译不通过,可以为 MySubClass 增加一个 value 属性
E. 编译不通过,把第 4 行改为 protected int value; 把第 11?行改为 super.value = value;
Super()
Sub()
Super()
Sub()
Sub(int)
Super(String)
Sub(String)
m1() int sub
m1() int super
m2() int super
第二行加一个 ??String ?str;
那应该如何修改?
第一个System.out.println(mc1.getValue);
System.out.println(mc2.getValue);
第二个 改包名为:package corejava.Chp7;或者删除 MyClass mc2=new MyClass(10);
System.out.println(mc1.getValue);
System.out.println(mc2.getValue);
Meal()
Lunch()
Vategable()
Potato()
Meat()
Vategable()
Tomato();
Sandwish()
包括的方法:吃饭、睡觉,工作
(1) 根据人类,定义一个学生类,增加属性:学校、学号;重写工作方法(实现内容为学习)
(2) 根据人类,定义一个工人类,增加属性:单位,工龄;重写工作方法
(3) 根据学生类,定义一个学生干部类(StudentLeader),增加属性:职务;增加方法:开会
(4) 定义一个测试类,分别创建上述 3 类具体人物的对象并将信息打印在控制台上。
package com.by.homework3;
public class Person {
????String name;
????String sex;
????int age;
????String nationality;
????public void eat(){
????????System.out.println("人的吃饭方法");
????}
????public void sleep(){
????????System.out.println("人的睡觉方法");
????}
????public void work(){
????????System.out.println("人的工作方法");
????}
}
package com.by.homework3;
public class Student extends Person{
????String school;
????String schoolNum;
????public Student() {
????}
????public void work(){
????????System.out.println("学生的学习方法");
????}
}
package com.by.homework3;
public class Worker extends Person{
????String depart;
????String seniority;
????public void work(){
????????System.out.println("工人的工作方法");
????}
}
package com.by.homework3;
public class StudentLead?extends Student?{
????String zhiwu;
????public void kaihui(){
????????System.out.println("学生的开会方法");
????}
}
Student student=new Student();
student.name="大黄";
student.age=19;
student.sex="男";
student.nationality="中国";
student.school="一中";
student.schoolNum="123";
System.out.println(student.name);
System.out.println(student.age);
System.out.println(student.sex);
System.out.println(student.nationality);
System.out.println(student.school);
System.out.println(student.schoolNum);
student.work();
Worker worker=new Worker();
worker.name="haha";
worker.age=18;
worker.sex="nan";
worker.nationality="CN";
worker.depart="show";
worker.seniority="6";
System.out.println(worker.name);
System.out.println(worker.age);
System.out.println(worker.sex);
System.out.println(worker.nationality);
System.out.println(worker.depart);
System.out.println(worker.seniority);
worker.work();
StudentLead studentLead=new StudentLead();
studentLead.name="";
studentLead.age=;
studentLead.sex="";
studentLead.nationality="";
studentLead.school="";
studentLead.schoolNum="";
studentLead.zhiwu="";
System.out.println(studentLead.name);
System.out.println(studentLead.age);
System.out.println(studentLead.sex);
System.out.println(studentLead.nationality);
System.out.println(studentLead.school);
System.out.println(studentLead.schoolNum);
System.out.println(studentLead.zhiwu);
studentLead.kaihui();
功能方法为:run 方法(行驶功能,控制台输出“车已经启动”)、showInfo(显示信息,控制台输出商标和颜色)
(1) 编写一个小汽车类(Car)继承于 Vehicles 类,添加属性座位(seats);成员方法 showCar(显示小汽车的所有信息)
(2) 编写一个卡车类(Truck)继承于 Vehicles 类,添加属性载重(load);成员方法 showTruck(显示卡车的所有信息)
(3) 定义测试类,分别创建 Car 对象和 Truck 对象,控制台打印输出的信息如下:
商标:奔驰,颜色:白色,座位:5
商标:福田,颜色:红色,载重:6.5 吨
package com.by.homework3;
public class Vehicles {
????String brand;
????String color;
????public void run(){
????????System.out.println("车子已经启动");
????}
????public void showInfo(){
????????System.out.println(brand);
????????System.out.println(color);
????}
}
package com.by.homework3;
public class Car extends Vehicles{
????String seats;
????public void showCar(){
????????showInfo();
????????System.out.println(seats);
????}
}
package com.by.homework3;
public class Truck extends Vehicles {
????String load;
????public void showTruck(){
????????showInfo();
????????System.out.println(load);
????}
}
package com.by.homework3;
import com.by.Obj.Teacher;
public class TestCar {
????public static void main(String[]args){
????????Car car=new Car();
????????car.brand="奔驰";
????????car.color="白色";
????????car.seats="5";
????????System.out.println(car.brand+car.color+car.seats);
????????Truck truck=new Truck();
????????truck.brand="福田";
????????truck.color="红色";
????????truck.load="6.5吨";
????????System.out.println(truck.brand+truck.color+truck.load);
????}
}
(1) Circle 类(圆形),属性:半径;方法:求周长、求面积
(2) Rect 类(矩形),属性:长、宽;方法:求周长、求面积
(3) Square 类(正方形),属性:边长;方法:求周长、求面积
提示: ① 这三个类均具有求周长和面积的方法 ② 正方形是特殊的矩形
package com.by.homework3.figure;
public class Figure {
????public void qiuzhouchang(){
????????System.out.println("周长");
????}
????public void qiumianji(){
????????System.out.println("面积");
????}
}
package com.by.homework3.figure;
public class Square extends Figure{
????int bianchang;
????public Square(){
????}
????public Square(int bianchang) {
????????this.bianchang = bianchang;
????}
????public void qiuzhouchang(){
????????int zhouchang=bianchang*4;
????????System.out.println("正方形的周长:"+zhouchang);
????}
????public void qiumianji(){
????????int mianji=bianchang*bianchang;
????????System.out.println("正方形的面积:"+mianji);
????}
}
package com.by.homework3.figure;
import com.by.homework3.figure.Figure;
public class Rect extends Figure {
?????int chang;
?????int kuan;
????public Rect() {
????}
????public Rect(int chang,int kuan) {
????????this.chang = chang;
????????this.kuan=kuan;
????}
????@Override
????public void qiuzhouchang() {
????????int zhouchang=chang*2+kuan*2;
????????System.out.println("矩形的周长为:"+zhouchang);
????}
????@Override
????public void qiumianji() {
????????int mianji=chang*kuan;
????????System.out.println("矩形面积为:"+mianji);
????}
}
package com.by.homework3.figure;
public class Circle extends Figure{
????int banjin;
????@Override
????public void qiuzhouchang() {
????????Double zhouchang=2*3.14*banjin;
????????System.out.println("圆的周长:"+zhouchang);
????}
????@Override
????public void qiumianji() {
????????Double mianji=3.14*banjin*banjin;
????????System.out.println("圆的面积:"+mianji);
????}
}
package com.by.homework3.figure;
public class Test {
????public static void main(String[]args){
????????Square square=new Square(10);
????????square.qiuzhouchang();
????????square.qiumianji();
????????Rect rect=new Rect(15,10);
????????rect.qiuzhouchang();
????????rect.qiumianji();
????????
????????Circle circle=new Circle(5);
????????circle.qiuzhouchang();
????????circle.qiumianji();
????}
}
(1) Employee:这是所有员工总的父类。
① 属性:员工的姓名,员工的生日月份
② 方法:getSalary(int month) 根据参数月份来确定工资,如果该月员工过生日,则公司会额外奖励 100 元。
(2) SalariedEmployee:Employee 的子类,拿固定工资的员工。
① 属性:月薪。
(3) HourlyEmployee:Employee 的子类,按小时拿工资的员工,每月工作超出 160 小时的部分按照 1.5 倍工资发放。
① 属性:每小时的工资、每月工作的小时数。
(4) SalesEmployee:Employee 的子类,销售,工资由月销售额和提成率决定。
① 属性:月销售额、提成率。
(5) BasePlusSalesEmployee:SalesEmployee 的子类,有固定底薪的销售人员,工资由底薪加上销售提成部分。
① 属性:底薪。
要求:
(1) 创建 SalariedEmployee、HourlyEmployee、SaleEmployee、BasePlusSalesEmployee四个类的对象各一个
(2) 分别调用getSalary(int money)方法计算某个月这四个对象各自的工资
注意:要求把每个类都做成完全封装,不允许非私有化属性。
package com.by.homework3.employee;
public class Employee {
????private String name;
????private int brith;
????public Employee(String name, int brith) {
????????this.name = name;
????????this.brith = brith;
????}
}
package com.by.homework3.employee;
public class HourlyEmployee extends Employee {
????private int hourSalary;
????private double hours;
????public double getHours() {
????????return hours;
????}
????public void setHours(double hours) {
????????this.hours = hours;
????}
????public HourlyEmployee(String name, int brith, int hourSalary, double hours) {
????????super(name, brith);
????????this.hourSalary = hourSalary;
????????this.hours = hours;
????}
}
package com.by.homework3.employee;
import javax.xml.namespace.QName;
public class SalariedEmployee extends Employee{
????private int monthSalary;
????public SalariedEmployee(String name, int brith, int monthSalary) {
????????super(name, brith);
????????this.monthSalary = monthSalary;
????}
????public double getMonth() {
????????return monthSalary;
????}
????public void setMonth(int monthSalary) {
????????this.monthSalary = monthSalary;
????}
????public double getSalary(int month){
????????return monthSalary + this.getSalary(month);
????}
}
package com.by.homework3.employee;
public class SalesEmployee extends Employee {
????private int monthlySales;
????private double royaltyRate;
????public SalesEmployee(String name, int brith, int monthlySales, double royaltyRate) {
????????super(name, brith);
????????this.monthlySales = monthlySales;
????????this.royaltyRate = royaltyRate;
????}
}
package com.by.homework3.employee;
public class BasePlusSaleEmployee extends SalesEmployee{
????private int diXin;
????public BasePlusSaleEmployee(String name, int brith, int monthlySales, double royaltyRate) {
????????super(name, brith, monthlySales, royaltyRate);
????}
????public int getDiXin() {
????????return diXin;
????}
????public void setDiXin(int diXin) {
????????this.diXin = diXin;
// ?????????????
????????????this.diXin = diXin;
????????}
????}
提示:
(1)编写一个圆类Circle,该类拥有:
1)一个成员变量,radius(私有,浮点型);//存放圆的半径;
2)两个构造方法
Circle() //将半径设为0
Circle(double r ) //创建Circle对象时将半径初始化为r
3)三个成员方法
double getArea() //获取圆的面积
double getPerimeter() //获取圆的周长
void show() //将圆的关径、周长、面积输出到屏幕
(2) 编写一个圆柱体类Cylinder,它继承于上面的Circle类。还拥有:
1)一个成员变量,double hight (私有,浮点型); //圆柱体的高;
2)构造方法
//创建Cylinder对象时将半径初始化为r,高度初始化为h
Cylinder(double r,double h)
3)成员方法
double getVolume() //获取圆柱体的体积
void showVolume() //将圆柱体的体积输出到屏幕
package com.by.homework3.circle17;
public class Circle {
????private double radius;
????public Circle() {
????}
????public double getRadius() {
????????return radius;
????}
????public Circle(double radius) {
????????this.radius = radius;
????}
}
package com.by.homework3.circle17;
public class Cylinder extends Circle {
????private double hight;
????public Cylinder() {
????}
????public Cylinder(double hight) {
????????this.hight = hight;
????}
}