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); }}这我就不贴效果图了~
- Java 继承的详解
- java 继承详解
- java 继承详解
- 详解java继承
- Java 继承详解
- Java 继承详解
- Java 继承详解
- Java 继承详解
- Java 继承详解
- java 继承详解
- 【Java】Java的继承和多态详解
- 【Java】Java的继承和多态详解
- 【Java】Java的继承和多态详解
- c++的继承详解
- c++的继承详解
- 黑马程序员---java继承详解
- Java 继承(extends)详解
- java 继承 继承的限制
- 2016 CVPR 德州仪器 ADAS Tutorial
- H264 NALunit
- linux上nginx的安装启动以及配合php-fpm的使用
- web.xml配置
- Apache 配置文件httpd.conf 的含义
- Java 继承的详解
- win7下安装yii2高级模板全过程
- ORACLE10g的Scheduler简介
- js仿iPhone手机端alert,loading,正在加载...
- 控制iframe高度的万能方法
- ExpandableListAdapter详细介绍
- 自定义UIMenuController
- windows中执行maven命令行
- 我学习SVM的过程和资料