网站首页 > 精选教程 正文
java程序员都知道,java语言是面向对象的语言。面向对象的三大特征:封装性、继承性、多态性。继承是多态的前提,如果没有继承就没有多态。
什么是继承?
继承在程序中的好处是通过继承,让重复的代码或者属性得到共用。
继承主要解决的问题就是:共性抽取 将共同的方法或者属性抽取出一个父类,这样只要继承了父类的子类,代码就可以得到更好的复用性。
继承关系的特点:
1.子类可以有父类的属性方法
2.子类也可有属于自己的属性和方法
3.子类和父类是一个“is-a”的关系
使用代码编写具有继承关系的java类
1.创建一个父类
package com.whkjkx.day1229.demo1;
/**
* @author 今日头条 科技空间规划
* @version 1.0
* 定义一个员工的类,做为父类
*/
public class Employee {
public void method(){
System.out.println("父类中method方法");
}
}
2.创建一个子类JavaEmployee
package com.whkjkx.day1229.demo1;
/**
* @author 今日头条 科技空间规划
* @version 1.0
* 定义一个员工的子类 java程序员的类
*/
public class JavaEmployee extends Employee{
}
3.创建另一个子类WebEmployee
package com.whkjkx.day1229.demo1;
/**
* @author 今日头条 科技空间规划
* @version 1.0
* 定义一个员工的子类 java程序员的类
*/
public class JavaEmployee extends Employee{
}
4.创建一个测试类
package com.whkjkx.day1229.demo1;
/**
* @author 今日头条 科技空间规划
* @version 1.0
* 测试类
*
* 定义父类的格式(就是一个简单的java类)
* public class 父类的名称 {
* //...
* }
*
* 定义子类的格式:
* public class 子类名称 extends 父类名称 {
* //...
* }
*
*/
public class Demo01Extends {
public static void main(String[] args) {
//创建员工的子类对象
JavaEmployee javaEmp = new JavaEmployee();
//使用子类对象调用父类的method方法
//虽然子类中什么方法都没有当时可以直接调用父类的方法
javaEmp.method();
//创建另一个员工类的子类对象
WebEmployee webEmp = new WebEmployee();
//虽然子类中没有任务的方法,但是依然可以调用父类中的method方法,可以看到达到了代码互用的方法
webEmp.method();
}
}
5.程序执行结果
继承中成员变量的访问特点
1.创建一个父类
package com.whkjkx.day1229.demo2;
/**
* @author 今日头条 科技空间规划
* @version 1.0
* 定义一个父类
*/
public class Fu {
int numFu = 1;
int num = 100;
public void methodFu() {
System.out.println(num);
}
}
2.创建一个子类对象
package com.whkjkx.day1229.demo2;
/**
* @author 今日头条 科技空间规划
* @version 1.0
* 定义一个父类
*/
public class Fu {
int numFu = 1;
int num = 100;
public void methodFu() {
System.out.println(num);
}
}
3.创建测试类
package com.whkjkx.day1229.demo2;
/**
* @author 今日头条 科技空间规划
* @version 1.0
* @date 2019/12/29 22:14
*
* 在父子类的继承关系中,如果成员变量重名,则创建子类对象时,访问用两种方式:
* 1.直接通过子类对象访问成员变量,等号左边是谁就优先使用该对象中的成员变量
* 如果没有则向上查找调用上一级父类的成员变量,如果上一级也没有则编译报错
* 2.间接通过成员方法访问成员变量,方法定义在哪个类里就调用该类的成员方法,
* 如果没有则向上查找
*/
public class Demo02ExtendsField {
public static void main(String[] args) {
Fu fu = new Fu();
//我们创建的是父类的对象,父类只是一个普通的类,所有只能调用父类的成员方法
System.out.println(fu.numFu);//执行结果 1
//创建一个子类对象
Zi zi = new Zi();
System.out.println(zi.numFu);//执行结果 1
System.out.println(zi.numZi);//执行结果 2
System.out.println("----------------------------");
//优先执行子类的成员方法
System.out.println(zi.num);//执行结果 200
//System.out.println(zi.a);//如果都没有则编译报错
System.out.println("-----------------------------");
//方法定义在哪个类里就调用该类的成员方法,如果没有则向上查找
zi.methodZi();// 执行结果 200
zi.methodFu();// 执行结果 100
}
}
4.运行结果:
- 上一篇: Java的三大特性之一:继承
- 下一篇: Java学习:基础(继承)
猜你喜欢
- 2024-11-27 JAVA面向对象的三大特征——继承
- 2024-11-27 JAVA中的注解可以继承吗?
- 2024-11-27 学长带你学习java第三课——继承
- 2024-11-27 java技术专家带你深入java核心技术:反射+继承设计技巧+枚举类
- 2024-11-27 【编程】Java中的继承和多态,你了解多少?
- 2024-11-27 Java开发:java面向对象思想之继承
- 2024-11-27 用最通俗易懂的例子讲明白继承和组合的本质区别
- 2024-11-27 java继承的概念是什么?
- 2024-11-27 java基础-3-继承
- 2024-11-27 Java小白成长记:Java如何实现封装、继承、解析解构
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- nginx反向代理 (57)
- nginx日志 (56)
- nginx限制ip访问 (62)
- mac安装nginx (55)
- java和mysql (59)
- java中final (62)
- win10安装java (72)
- java启动参数 (64)
- java链表反转 (64)
- 字符串反转java (72)
- java逻辑运算符 (59)
- java 请求url (65)
- java信号量 (57)
- java定义枚举 (59)
- java字符串压缩 (56)
- java中的反射 (59)
- java 三维数组 (55)
- java插入排序 (68)
- java线程的状态 (62)
- java异步调用 (55)
- java中的异常处理 (62)
- java锁机制 (54)
- java静态内部类 (55)
- java怎么添加图片 (60)
- java 权限框架 (55)
本文暂时没有评论,来添加一个吧(●'◡'●)