1-8继承extends
什么是继承?
继承是面向对象三大特征之一。java中的继承描述的是两个类之间的关系,被继承的类称为父类,继承的类称为子类,使用extends关键字来表示。在java语言里面只支持单继承,即一个类只能有一个父类,子类可以继承父类中的非private修饰的成员方法和成员变量,构造方法不能被继承,java里面的继承跟现实生活中的继承颇为相似,现实生活中一个儿子只能有一个父亲,儿子可以继承父亲的房子车子但是不能继承父亲大脑里面的思想和知识。如果一个类没有显示的继承其他类,那么这个类会默认继承Object类,Object是SUN公司提供的java中的根类。
继承的优点
提高了代码的复用性
提高了代码的维护性
让类与类之间产生了关系,是多态的前提
继承的缺点
增强了类之间的耦合。
软件开发的一个原则是高内聚,低耦合。
内聚是一个模块内各个元素彼此结合的紧密程度
耦合是一个软件里面不同模块之间相互连接的数量
如何使用extends来实现继承关系?
语法:
[修饰符列表] class 子类名 extends 父类名{
类体;
}
首先,来自己定义一个父类SuperClass
public class SuperClass{
public void m1(){
System.out.println("SuperClass中的m1方法");
}
private void m2(){
System.out.println("SuperClass类中的m2方法");
}
}
然后定义一个子类SubClass来继承SuperClass
public class SubClass extends SuperClass{
public void m3(){
System.out.println("SubClass中的m3方法");
}
}
写一个测试类来测试一下
public class Test01{
public static void main(String[] args){
SubClass s = new SubClass();
//因为SubClass继承了SuperClass,所以可以在子类里面调用父类的方法
s.m1();
//s.m2();//子类不能访问父类中private修饰的方法
//SubClass中自己的方法
s.m3();
}
}
将上面代码修改一下,创建一个SuperClass的父类SuperSuperClass
public class SuperSuperClass{
public void m0(){
System.out.println("SuperSuperClass中的m0方法");
}
}
让SuperClass继承SuperSuperClass
public class SuperClass extends SuperSuperClass{
public void m1(){
System.out.println("SuperClass中的m1方法");
}
public void m2(){
System.out.println("SuperClass类中的m2方法");
}
}
写一个测试类来测试一下
public class Test02{
public static void main(String[] args){
SubClass s = new SubClass();
s.m0();//可以调用
}
}
Java不支持多继承,但是支持多层继承,即子类—>父类—>爷爷类….—>祖先类—>Object类,子类可以访问其先辈类里面的非private修饰的成员方法和成员变量。
1-8继承extends的更多相关文章
- JAVA之旅(六)——单例设计模式,继承extends,聚集关系,子父类变量关系,super,覆盖
JAVA之旅(六)--单例设计模式,继承extends,聚集关系,子父类变量关系,super,覆盖 java也越来越深入了,大家加油吧!咱们一步步来 一.单例设计模式 什么是设计模式? JAVA当中有 ...
- Django---MTV和MVC的了解,Django的模版语言变量和逻辑,常见的模板语言过滤器,自定义过滤器,CSRF了解,Django的母版(继承extends,块block,组件include,静态文件的加载load static),自定义simple_tag和inclusion_tag
Django---MTV和MVC的了解,Django的模版语言变量和逻辑,常见的模板语言过滤器,自定义过滤器,CSRF了解,Django的母版(继承extends,块block,组件include,静 ...
- Js 类继承 extends
html 及 js 代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset=&q ...
- iBatis.net 类的继承extends和懒加载
<resultMaps> <resultMap id="FullResultMap" class="t_c_team_member_permission ...
- es6 Class的继承extends & super
Class之间可以通过extends关键字,实现继承. 子类会继承父类的属性和方法. class Point { constructor(x, y) { this.x = x; this.y = y; ...
- 8 继承-extends
面向对象的特征:继承,封装和多态 java 当中只支持单继承,不允许多继承 class Person { String name; int age; void eat() { System.out.p ...
- 继承extends
class Person{ String name; int age; void eat(){ System.out.println("吃饭"); } void introduce ...
- JAVA 继承 extends
/* 继承 1.提高了代码的复用性,简化了代码 2.让类与类之间产生了继承关系,才有了后面的多态的特性的存在 注意:千万不要为了获取其它类的功能简化代码,而建立继承关系, 必须要类与类之间存在继承关系 ...
- JAVA篇<一> 继承extends(已转移到JAVA总结篇)
前题:如果不经过指出继承,那么所有的类都继承了JAVA中的Object类. 正文: 继承的关键字是:extends,是所有面向对象语言的重要特性. 例public class TestExtends ...
- Java 继承extends、关键字super和this、多态、动态绑定
Manager 经理 extends Employee 雇员 "is-a"(是)关系是继承的一个明显特征.每个经理都是一名雇员. 从术语的角度讲,Manager是子类,Emplo ...
随机推荐
- VC++中全局变量的问题(转)
全局变量一般这样定义:1.在一类的.cpp中定义 int myInt;然后再在要用到的地方的.cpp里extern int myInt:这样就可以用了. 2.在stdafx.cpp中加入:int my ...
- What is the difference between message queue pattern and publish-subscribe?
What is the difference between message queue pattern and publish-subscribe? - Quora https://www.quor ...
- opencv IplImage各参数详细介绍以及如何从一个JPEG图像数据指针转换得到IplImage
这篇文章里介绍得最清楚了.http://blog.chinaunix.net/uid-22682903-id-1771421.html 关于颜色空间 RGB颜色空间已经非常熟悉了.HSV颜色空间需要 ...
- safi 中placeholder不垂直居中
用css hack将line-height 设置为1 例子: input{height: 32px; line-height: 32px; [;line-height: 1px;]};
- MYSQL进阶学习笔记二:MySQL存储过程和局部变量!(视频序号:进阶_4-6)
知识点三:MySQL存储过程和局部变量(4,5,6) 存储过程的创建: 创建存储过程的步骤: 首先选中数据库 改变分隔符,不让分号作为执行结束的标记.(通常情况下,改变分隔符命令 DELIMI ...
- hdu 4300 Clairewd’s message(kmp/扩展kmp)
题意:真难懂.. 给出26个英文字母的加密表,明文中的'a'会转为加密表中的第一个字母,'b'转为第二个,...依次类推. 然后第二行是一个字符串(str1),形式是密文+明文,其中密文一定完整,而明 ...
- mediaplayer state
enum media_player_states { MEDIA_PLAYER_STATE_ERROR = 0, MEDIA_PLAYER_IDLE = 1 << 0, MEDIA_PLA ...
- async-await系列翻译(一)
本篇翻译的英文链接:https://docs.microsoft.com/en-us/dotnet/articles/standard/async-in-depth 使用.NET的基于任务的异步编程模 ...
- 每次rand出来都是41?说好的随机数呢?!
rand()函数是C++标准函数库提供的随机数生成器,生成0-RAND_MAX之间的一个"伪随机"整数,理论上可以产生的最大数值为2^16-1,即32767. rand()函数不接 ...
- AutoIt: WinGetClassList可以把当前窗口所有的handle全部列出来
WinGetClassList 是一个非常有用的函数,可以返回当前窗口中所有的handle.返回的是一个字符串,可以使用split函数来拆分之. Opt("WinTitleMatchMode ...