Java中的类继承机制、接口

1)声明一个Person类,有name(String类型)、age(int类型)、sex(char类型)属性,通过构造方法进行赋值。一个show方法,返回String类型,内容如下:

    某某 男(女) 年龄

2)声明一个Student类,继承Person类,增加id(int,学号)属性,通过构造方法,利用super调用父类构造方法来进行变量赋值。Override父类的show方法,返回String类型,内容如下:

    某某 男(女) 年龄 学号     (提示:利用super调用父类的show方法得到除学号部分的String,然后加上学号的信息。)

3)声明一个Teacher类,继承Person,增加course(String,所教课程)属性,通过构造方法,利用super调用父类构造方法来进行变量赋值。Override父类的show方法,返回String类型,内容如下:

    某某 男(女)年龄 所教课程    (提示:利用super调用父类的show方法得到除所教课程部分的String,然后加上所教课程的信息。)

4)声明PersonApp类,在其中的main方法中分别声明Person、Student、Teacher类型的变量,并通过构造方法初始化,然后显示各自的信息。

 1 public class PersonApp{
 2     public static void main(String[] ages){
 3         Person p=new Person("张三",‘男‘,20);
 4         Person s=new Student("李四",‘男‘,21,16040210);
 5         Person t=new Teacher("王五",‘女‘,22,"数学");
 6         System.out.println(p.show());
 7         System.out.println(s.show());
 8         System.out.println(t.show());
 9     }
10 }
11 class Person{
12     private String name;
13     private char sex;
14     private int age;
15     Person(String name,char sex,int age){
16         this.name=name;
17         this.sex=sex;
18         this.age=age;
19     }
20     public String getName(){
21         return name;
22     }
23     public void setName(String name){
24         this.name=name;
25     }
26     public char getSex(){
27         return sex;
28     }
29     public void setSex(char sex){
30         if(sex==‘男‘||sex==‘女‘)
31             this.sex=sex;
32         else
33             System.out.println("sex error!");
34     }
35     public int getAge(){
36         return age;
37     }
38     public void setAge(int age){
39         if(age>0&&age<120)
40             this.age=age;
41         else
42             System.out.println("age error!");
43     }
44     public String show(){
45         return name+","+sex+","+age;
46     }
47 }
48 class Student extends Person{
49     private int id;
50     Student(String name,char sex,int age,int id){
51         super(name,sex,age);
52         this.id=id;
53     }
54     public String show(){
55         return super.show()+","+id;
56     }
57 }
58 class Teacher extends Person{
59     private String course;
60     Teacher(String name,char sex,int age,String course){
61         super(name,sex,age);
62         this.course=course;
63     }
64     public String show(){
65         return super.show()+" "+course;
66     }
67 }

声明一个Shape接口,其中有计算面积(area)、周长(perimeter)的方法,有以下几个实现:Circle(圆),Rectangle(矩形),Triangle(三角形),都有计算面积、周长的方法。

 1 interface  Shape
 2 {
 3    void count();
 4 }
 5 class Circle implements Shape
 6 {
 7     private int r;
 8     private double CirclePerimeter;
 9     Circle(int r)
10     {
11         this.r=r;
12     }
13     public void count()
14     {
15         if(r<0||r==0)
16         {
17             System.out.println("r error!");
18             return;
19         }
20         else
21         CirclePerimeter=2*r*3.14;
22         double CircleArea=3.14*r*r;
23         System.out.println("圆的周长是:"+CirclePerimeter+",面积是 "+CircleArea);
24     }
25 }
26 class Rectangle implements Shape
27 {
28     private double l,w;
29     private double RectanglePerimeter;
30     Rectangle(double l,double w)
31     {
32         this.l=l;
33         this.w=w;
34     }
35     public void count()
36     {
37         if((l>0)&&(w>0))
38         {
39         RectanglePerimeter=2*(l+w);
40         double RectangleArea=l*w;
41         System.out.println("矩形的周长是:"+RectanglePerimeter+",面积是"+RectangleArea);
42         }
43         else
44         {
45             System.out.println("l or w error!");
46         }
47
48     }
49 }
50 class Triangle implements Shape
51 {
52     private double d,h,s1,s2;
53     Triangle(double d,double h,double s1,double s2)
54     {
55         this.d=d;
56         this.h=h;
57         this.s1=s1;
58         this.s2=s2;
59     }
60     public void count()
61     {
62         if((d>0)&&(s1>0)&&(s2>0)&&(h>0))
63         {
64             double TrianglePerimeter=d+s1+s2;
65             double TriangleArea=(d*h)/2;
66             System.out.println("三角形的周长是:"+TrianglePerimeter+",面积是"+TriangleArea);
67         }
68         else
69         {
70             System.out.println("d or h or s1 or s2 error!");
71         }
72     }
73 }
74 public class Show
75 {
76     public static void main(String[] args)
77     {
78         Shape a1=new Circle(3);
79         Shape a2=new Rectangle(4,5);
80         Shape a3=new Triangle(8,3,5,5);
81         a1.count();
82         a2.count();
83         a3.count();
84     }
85 }

原文地址:https://www.cnblogs.com/TimhLiu/p/9245809.html

时间: 2024-11-05 19:41:49

Java中的类继承机制、接口的相关文章

java中的类实现comparable接口 用于排序

import java.util.Arrays; public class SortApp { public static void main(String[] args) { Student[] stus = new Student[3]; stus[0] = new Student(11, 99); stus[1] = new Student(13, 92); stus[2] = new Student(13, 89); Arrays.sort(stus); for (Student stu

java中什么是继承,和继承的接口的关系?

继承的概念 继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类. 继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为. 面试题: 一个接口可以继承多个接口. interface C extends A, B {}是可以的. 一个类可以实现多个接口: class D implements A,B,C{} 但是一个类只能继承一个类,不能继承多个类 class B extends A{} 生活中的继承: i

java中封装,继承,多态,接口学习总结

### 一:封装java中封装是指一种将抽象性函式接口的实现细节部分包装.隐藏起来的方法. 封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问.要访问该类的代码和数据,必须通过严格的接口控制.封装最主要的功能在于我们能修改自己的实现代码,而不用修改那些调用我们代码的程序片段.适当的封装可以让程式码更容易理解与维护,也加强了程式码的安全性.***封装的优点***    1  良好的封装能够减少耦合.    2 类内部的结构可以自由修改.     3 可以对成员变量进行更精

关于Java中基类构造器的调用问题

在<Java编程思想>第7章复用类中有这样一段话,值得深思.当子类继承了父类时,就涉及到了基类和导出类(子类)这两个类.从外部来看,导出类就像是一个与基类具有相同接口的新类,或许还会有一些额外的方法和域.但继承并不只是复制基类的接口.当创建一个导出类对象时,该对象包含了一个基类的子对象,这个子对象与你用基类直接创建的对象是一样的,二者区别在于,后者来自于外部,而基类的子对象是被包裹在导出类对象内部. 这就引发出了一个很重要的问题,对基类子对象的正确初始化也是至关重要的(我们可能在子类的使用基类

Java中实现多态的机制

一,多态定义: 多态就是指一个引用变量倒底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的方法,必须在由程序运行期间才能决定. 一,实现多态的机制 java中实现多态的机制是依靠父类或接口的引用指向子类.从而实现了一个对象多种形态的特性.其中父类的引用是在程序运行时动态的指向具体的实例,调用该引用的方法时,不是根据引用变量的类型中定义的方法来运行,而是根据具体的实例的方法. 三,条件 Java实现多态有三个必要条件:继承.重写.向上转型 原文地址:https://www.cn

Java中String类学习总结

java中String类的使用频率非常高,本人在学习此模块时,认为下列几点知识值得注意: 一.String是不可变对象 java.lang.String类使用了final修饰,不能被继承.Java程序中的所有字面值,即双引号括起的字符串,如"abc",都是作为String类的实例实现的.String是常量,其对象一旦构造就不能再被改变.换句话说,String对象是不可变的,每一个看起来会修改String值的方法,实际上都是创造了一个全新的String对象,以包含修改后的字符串内容.而最

Java虚拟机的类载入机制

Java虚拟机类载入过程是把Class类文件载入到内存.并对Class文件里的数据进行校验.转换解析和初始化,终于形成能够被虚拟机直接使用的java类型的过程. 在载入阶段,java虚拟机须要完毕下面3件事: a.通过一个类的全限定名来获取定义此类的二进制字节流. b.将定义类的二进制字节流所代表的静态存储结构转换为方法区的执行时数据结构. c.在java堆中生成一个代表该类的java.lang.Class对象,作为方法区数据的訪问入口. Java虚拟机的类载入是通过类载入器实现的, Java中

Java中Properties类

Java中Properties类简介 知识学而不用,就等于没用,到真正用到的时候还得重新再学. Properties类继承自Hashtable,如下: 它主要用于读取Java的配置文件,由于配置文件中的很多变量时经常改变的,通过这个类可以让用户脱离程序本身去修改相关的变量配置.在Java中,其配置文件常为.properties文件,格式为文本文件,内容的格式为“键=值”的格式,#打头的是注释行,Properties会忽略注释.允许只有key没有value,没有value时,value会被set成

关于java中任意对象强制转换为接口类型的问题

java中任意对象强转为接口类型都不会有编译错误 public class Apple implements Eatable{ public static void main(String args[]) { Drinkable drinkable = (Drinkable)new Apple(); } } interface Eatable{} interface Drinkable{} java中的类可以多实现接口,Java编译器无法判断该类是否实现了该接口所以不会有编译错误. 但是Java