Java 继承的详解

来源:互联网 发布:阿里云docker 编辑:程序博客网 时间:2024/06/07 23:48

继承是描述类与类之间的关系

既然是描述类与类之间的关系,那就要先了解类与类之间的常见关系~


现实生活中,下面的例子体现了部分与整体~

学生   是人  

狗     是动物

球队 包含 球员 整体与部分的关系,部分可以删除和增加

笔记本包含 cpu整体与部分的关系,部分不可以删除和增加

航母编队 包含(航母 护卫舰 驱逐舰 舰载机 核潜艇)

在java中,写个体现类关系的例子吧~代码如下:

class Person{String name;int age;Address add;Person(){}Person(String name,int age,Address add){this.name=name;this.age=age;this.add=add;}void speak(){System.out.println("姓名:"+name+" 年龄:"+age+" "+add.print());}}    class Address{String country;String city;String street;Address(){}Address(String country,String city,String street){this.country=country;this.city=city;this.street=street;}String print(){return "地址:"+country+" "+"城市:"+city+"  街道;"+street;}}class Demo3{public static void main(String[] args){Address add=new Address("中国","广州","棠东东路");Person p=new Person("jack",27,add);p.speak();System.out.println();     }}
在这个例子中,Person类中使用了Address类对象~说明这俩个类是有点关系的~每个人都有一个家庭地址~

再来一个例子:

描述一个学生类-姓名年龄学号属性,学习的方法

描述一个工人类-姓名年龄工号属性,工作的方法

描述一个人类-姓名年龄属性,说话的方法。

可以发现学生类和人类天生有着联系,学生和工人都是人。所以人有的属性和行为学生和工人都会有。出现类代码重复,代码如下:

class Person {String name;int age;// 静态变量(类变量)对象和对象之间的代码重复使用静态变量static String country = "CN";Person() {}void speak() {System.out.println(name + ":哈哈,我是人!!!");}}// 让学生类和人类产生关系,发现学生is a 人,就可以使用继承class Student {String name;int age;Student() {}void study() {System.out.println("姓名:" + name + "年纪:" + age + ":好好学习");}}class Worker {String name;int age;void work() {System.out.println(name + ":好好工作,好好挣钱。");}}class Demo1 {public static void main(String[] args) {Student s = new Student();s.name = "jack";s.age = 20;s.study();Worker w = new Worker();w.name = "rose";w.work();}}
可以发现几个问题:

1:如果没有继承,出现类和类的关系无法描述

2:如果没有继承,类和类之间有关系会出现类和类的描述代码的重复。

so,这时候继承是很必须的~

继承的特点:

1:描述类和类之间的关系

2:降低类和类之间的重复代码

1:降低对象和对象之间的代码重复使用静态变量

2:降低类和类之间的代码重复使用就继承

继承细节:

1:类名的设定,被继承的类称之为父类(基类),继承的类称之为子类

2:子类并不能继承父类中所有的成员

   1:父类定义完整的成员 静态成员,非静态,构造方法。静态变量和静态方

法都可以通过子类名.父类静态成员的形式调用成功

   2:所有的私有成员不能继承,private修饰的成员。

   3:构造函数不能被继承

类与类之间通过extends关键字来实现


注意以下几点:

1:不要为了使用继承而继承。工人和学生都有共性的成员,不要为了节省代

码,让工人继承学生。

2.一定要弄清楚谁继承谁,不要弄错了~

下面给个学生类(子类)继承了人类(父类)的部分的代码:

class Person {String name;int age;// 静态变量(类变量)对象和对象之间的代码重复使用静态变量static String country = "CN";Person() {}void speak() {System.out.println(name + ":哈哈,我是人!!!");}}// 让学生类和人类产生关系,发现学生is a 人,就可以使用继承class Student extends Person {Student() {}void study() {System.out.println("姓名:" + name + "年纪:" + age + ":好好学习");}}class Demo1 {public static void main(String[] args) {Student stu = new Student();stu.name = "jack";stu.age = 20;stu.study();stu.speak();System.out.println(stu.country);System.out.println(Student.country);        }}
这我就不贴效果图了~


0 0
原创粉丝点击