Java类的继承

为描述和处理个人信息,定义类Person:
public class Person {
  public String name;
  public inat age;
  public Date birthDate;

  public String getInfo()
  {...}
}
为描述和处理学生信息,定义类Student:
public class Student {
  public String name;
  public int age;
  public Date birthDate;
  public String school;

  public String getInfo()
  {...}
}
通过继承,简化Student类的定义:
public class Person {
  public String name;
  public int age;
  public Date birthDate;
  public String getInfo() {...}
}

public class Student extends Person{
  public String school;
}
Student类继承了父类Person的所有属性和方法,并增加了一个属性school。Person中的属性和方法,Student都可以利用。
类继承语法规则:

  < 修饰符> class < 子类名称> [extends < 父类>]
  {
    <属性和方法的声明>
  }
Java只支持单继承,不允许多重继承
一个子类只能有一个父类,一个父类可以派生出多个子类
子类继承了父类,就继承了父类的方法和属性。
在子类中,可以使用父类中定义的方法和属性,也可以创建新的数据和方法。

在Java 中,继承的关键字用的是“extends”,即子类不是父类的子集,而是对父类的“扩展”。

关于继承的规则:
  子类不能继承父类中私有的(private)的成员变量和方法

例子:

public class Person {
public String name;
public int age;
public Date birth;
public String getInfo(){
return "name: " + name + ", " + "age: " + age + ", " + "birth: " + birth;
}
}
public class Student extends Person{

    public String school;

        public void print() {
//System.out.println(this.lover);
}
}
public class TestPerson {
public static void main(String[] args) { Student student = new Student();
student.name = "Jerry";
student.birth = new Date();
student.age = 1;
student.school = "atguigu"; // student.lover = ""; System.out.println(student.getInfo()); Person person = new Person(); person.age = 1;
person.birth = new Date();
person.name = "Tom"; System.out.println(person.getInfo());
}
}

练习
1、(1)定义一个ManKind类,包括
  成员变量 int sexint salary
  方法 void manOrWorman():根据sex的值显示“man”(sex==1)或者“women”(sex==0);
  方法 void employeed():根据salary的值显示“no job”(salary==0)或者“ job”(salary!=0)。

 /**
* 定义一个ManKind类,包括
* 成员变量 int sex 和 int salary;
* 方法 void manOrWorman():根据sex的值显示“man”(sex==1)或者“women”(sex==0);
* 方法 void employeed():根据salary的值显示“no job”(salary==0)或者“ job”(salary!=0)。
*/
public class ManKind { int sex;
int salary; public void manOrWoman() {
if(sex == 0){
System.out.println("woman");
}else if(sex == 1){
System.out.println("man");
}
} public void employeed() {
if(salary != 0){
System.out.println("job");
}else{
System.out.println("no job");
}
}
}

(2)定义类Kids1继承ManKind,并包括
  成员变量 int yearsOld;
  方法 printAge() 打印 yearsOld 的值。

(3)在Kids1类的main方法中实例化Kids1的对象 someKid,用该对象访问其父类的成员变量及方法。

 /**
* 定义类 Kids1 继承ManKind,并包括
* 成员变量 int yearsOld;
* 方法 printAge() 打印 yearsOld 的值。
*
* 在Kids1中重新定义employed() 方法,覆盖父类ManKind中定义的employed()方法,
* 输出“Kids should study and no job.”
*/
public class Kids1 extends ManKind{ int yearsOld; void printAge(){
System.out.println("yearsOld: " + yearsOld);
} //修改练习3中定义的类Kids1中employed()方法,在该方法中调用父类ManKind的employed()方法,
//然后再输出“but Kids should study and no job.”
public void employeed() {
super.employeed();
System.out.println("Kids should study and no job.");
} //在Kids1类的main方法中实例化Kids1的对象 someKid,用该对象访问其父类的成员变量及方法。
public static void main(String[] args) {
Kids1 someKid = new Kids1();
someKid.sex = 1;
someKid.salary = 5000;
someKid.yearsOld = 25; someKid.manOrWoman();
someKid.employeed();
someKid.printAge();
}
}

2、根据下图实现类。在TestCylinder类中创建Cylinder类的对象,设置圆柱的底面半径和高,并输出圆柱的体积。

 public class Circle {

     protected double radius;

     public Circle(double radius) {
this.radius = radius;
} public double getRadius() {
return radius;
} public void setRadius(double radius) {
this.radius = radius;
} public double findArea(){
return 3.14 * radius * radius;
}
}
 public class Cylinder extends Circle{

     private double length;

      public Cylinder() {
this.length = 1;
} public double getLength() {
return length;
} public void setLength(double length) {
this.length = length;
} /**
* 返回圆柱的体积
* @return
*/
public double findVolume(){
return super.findArea() * length;
} /**
* 返回圆柱的表面积
*/
@Override
public double findArea() {
return super.findArea() * 2 + 2 * 3.14 * radius * length;
}
}
 public class TestCylinder {
public static void main(String[] args) { Cylinder cylinder = new Cylinder(); cylinder.setLength(2); //返回表面积
System.out.println(cylinder.findArea());
//返回体积
System.out.println(cylinder.findVolume());
}
}

Java 类设计----Java类的继承的更多相关文章

  1. Java开发设计——UML类图

    Java开发设计——UML类图 摘要:本文主要介绍了UML类图的相关知识. 简介 在UML中,类使用包含类名.属性和操作且带有分隔线的长方形来表示,类图分为三层. 第一层是类的名称,如果是抽象类或接口 ...

  2. 以人类 Person 为基类设计学生类 Student 和教师类 Teacher

    学习内容:实验二以人类 Person 为基类设计学生类 Student 和教师类 Teacher 示例代码: package 实验二; import java.util.Scanner; class ...

  3. 实验二——以点类 Point 为基类设计圆类 Circle

    学习内容:以点类 Point 为基类设计圆类 Circle 示例代码: package 实验二; import java.util.Scanner; class Point{//父类Point pri ...

  4. Java实验项目三——编程实现Person类,学生类的设计及其继承关系

    Program: 编程实现Person类,学生类的设计及其继承关系 代码如下: 定义抽象类Person 1 /* 2 * Description:建立抽象类 3 * 4 * Written By:Ca ...

  5. Java学习---JAVA的类设计

    基础知识 JAVA是由C/C++语言发展而来的纯面向对象语言,其基本元素包括:简单数据类型 和 复合数据类型(即类).类是对客观事物的抽象描述,它有面向对象的四个特点,即:封装性.继承性.多态性和通信 ...

  6. Java的对象与类,继承

    Java的对象与类,继承 题目1.Java类的建立与使用 设计一个用来描述汽车的类,使用类的非静态成员变量来表示汽车的车主姓名.当前的速率和当前方向盘的转向角度,使用类的非静态成员方法来表示改变汽车的 ...

  7. Android(java)学习笔记62:继承Thread类创建线程类

    package cn.itcast_02; /* * 该类要重写run()方法,为什么呢? * 不是类中的所有代码都需要被线程执行的. * 而这个时候,为了区分哪些代码能够被线程执行,java提供了T ...

  8. Java 类设计技巧

    摘自<Java核心技术>卷I:基础知识 p140 第4章对象与类 - 类设计技巧 1)一定将数据设计为私有. 最重要的是:绝对不要破坏封装性.有时候,需要编写一个访问器方法或更改器方法,但 ...

  9. 设计一个 Java 程序,自定义异常类,从命令行(键盘)输入一个字符串,如果该字符串值为“XYZ”。。。

    设计一个 Java 程序,自定义异常类,从命令行(键盘)输入一个字符串,如果该字符串值为“XYZ”,则抛出一个异常信息“This is a XYZ”,如果从命令行输入 ABC,则没有抛出异常.(只有 ...

随机推荐

  1. Spark使用总结与分享【转】

    背景 使用spark开发已有几个月.相比于python/hive,scala/spark学习门槛较高.尤其记得刚开时,举步维艰,进展十分缓慢.不过谢天谢地,这段苦涩(bi)的日子过去了.忆苦思甜,为了 ...

  2. 使用codedom 编写脚本解释器

    本篇博客的目的是为了保存例子,怕自己忘记. private void dd(string code) { string path = "BonkerSpace"; if (File ...

  3. ASP.NET(C#)不提示直接关闭当前页面

    protected void Button1_Click(object sender, EventArgs e) { //关闭页面--要弹出提示(IE6及以下不弹出提示) ClientScript.R ...

  4. 【WPF】Button按钮添加背景图片

    只是想做一个很简单的图片按钮而已,不需要那么复杂. <Button x:Name="btn" Width="145" Height="30&qu ...

  5. pthread_setschedparam

    #include <stdlib.h> #include <pthread.h> #include <stdio.h> #include <sched.h&g ...

  6. HBase shell 命令。

    HBase shell 命令. 进入hbase shell console$HBASE_HOME/bin/hbase shell如果有kerberos认证,需要事先使用相应的keytab进行一下认证( ...

  7. CodeIgniter(3.1.4)框架中添加执行时间统计代码

    CodeIgniter(3.1.4)框架中添加,执行时间统计代码: system/core/CodeIgniter.php最后行处. /* * ---------------------------- ...

  8. 数据处理包plyr和dplyr包的整理

    以下内容主要参照 Introducing dplyr 和 dplyr 包自带的简介 (Introduction to dplyr), 复制了原文对应代码, 并夹杂了个人理解和观点 (多附于括号内). ...

  9. 【转】iOS-APP如何做才安全

    iOS应用的安全性 常常被大家忽视. iOS 如何做才安全: 1.首先,我们可以通过iTunes 下载 AppStore的ipa文件(苹果 把开发者上传的ipa包 进行了加壳再放到AppStore中) ...

  10. 《FPGA全程进阶---实战演练》第四章之Quartus II使用技巧

    技巧1:“新”技能 hierarchies警告寻找 在编译之后,警告中“hierarchies”这个单词大家估计都很熟悉了,一看到这个警告,基本上就是例化时出现的问题.一般例化时,要是哪个连线没引出, ...