您的位置:首页 > 编程语言 > Java开发

Java 继承的详解

2016-07-15 11:35 351 查看
继承是描述类与类之间的关系

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

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

学生 是人

狗 是动物

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

笔记本包含 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);
}
}
这我就不贴效果图了~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 继承 生活 class