继承、抽象

继承、抽象

一.继承

1.继承解决的问题:共性抽取
子类中有共性的内容(成员变量、成员方法)抽取到父类中,子类可以直接使用父类非私有的成员。

2.继承的格式

public cLass 父类{//成员变量、构造方法、成员方法
}public class 子类 extends 父类{//成员变量、构造方法、成员方法
}

3.继承的特点
(1)Java只支持单一继承:一个类只能有一个父类。
(2)java可以多层继承:父类也可以有自己的父类,且子类可以继承父类的父类
注:任何一个类都直接或者间接的继承Object类。

4.继承的好处弊端:
好处:提高了代码的复用性、可维护性。
弊端:增强了代码的耦合性(类与类之间的关系更加密切)

5.继承中的访问特点
(1)成员变量的访问
遵循就近原则:先到子类中找,子类没有就去父类中找【如果想单独用子类或者父类的变量,则用this和super区分调用】
(2)成员方法的访问
遵循就近原则,补充:如果本类调用自己的方法,则this可以省略
(3)构造方法的访问
a.子类中所有的构造方法,都会默认去调用父类的空参数构造方法
原因:子类的构造方法的第一行有一个super(),它用于父类的成员初始化。
b.如果不想去访问父类的空参构造方法,可以手动使用super(参数)去访问有参构造方法
注意:this();和super();都只能在构造方法的第一行,所以他们不能共存。

6.方法重写
(1)概念:在子父类关系中,子类和父类有一模一样的方法,这种现象叫方法重写。
【意义:子类复写父类方法,既能保证父类方法的不变,子类也能有自己的方法实现】
(2)注意事项:
a.私有方法不能重写
b.静态、final修饰方法不能复写
c.子类复写父类方法,权限必须大于或等于父类
【public > protected > 默认 > private】
(3)与方法重载的区分
方法重载:同一个类中,方法名相同,参数列表不同(参数类型不同、参数个数不同、参数顺序不同,方法修饰权限可不同)

二.抽象

1.概念
抽象是继承的一个延伸,在父类中有些方法不知道怎么写,可以不写,这就是抽象方法。

2.抽象的使用格式:

//抽象一定是修饰父类
public abstract class 父类{
public abstract void 抽象方法();
public void 普通方法(){}
}
//子类继承抽象类,必须重写父类的抽象方法
public class 子类 extends 父类{
//重写抽象方法
@Override//注解,可用于判断重写方法是否写错
public void 抽象方法(){ 方法体; }
}

3.抽象的注意事项:
(1)抽象类不能创建对象
(2)具体的子类继承抽象类,必须重写抽象方法,如果是抽象类继承,可以不用复写方法(它的存在意义可以补充父类的抽象方法)
(3)抽象方法必须在抽象类中,但是抽象类中不一定要有抽象方法
(4)抽象方法没有方法主体

public class Test1 {public static void main(String[] args) {Zi z = new Zi();z.show();}
}abstract class Fu{public void show (){System.out.println("FU你好,世界");}
}class Zi extends Fu{public void show (){super.show();System.out.println("ZI你好,世界");}
}

4.抽象的意义
限制子类的行为(方法),通过父类的抽象方法进行定义。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/330906.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JDK 5 ~ 10 新特性倾情整理

转载自 JDK 5 ~ 10 新特性倾情整理最近连 JDK11都在准备发布的路上了,大家都整明白了吗?也许现在大部分人还在用6-8,8的新特性都没用熟,9刚出不久,10-11就不用说了。为了大家对JDK有一个全面的了解,下面我为…

Java 内存模型 JMM 详解

转载自 Java 内存模型 JMM 详解JMM简介 Java Memory Model简称JMM, 是一系列的Java虚拟机平台对开发者提供的多线程环境下的内存可见性、是否可以重排序等问题的无关具体平台的统一的保证。(可能在术语上与Java运行时内存分布有歧义,后者指堆、方法区、线程栈等内存…

多种代码块

代码块 1.概念 代码块其实就是一对{ },根据其放的位置不同,它的特性也不同 2.分类 (1)构造代码块 位置:类中方法外 作用:提取构造方法中共性的代码,每次执行构造方法都会执行。 (…

spring boot 入门-使用spring boot构建简单应用

目的&#xff1a;建立一个简单的联系人列表&#xff1b; 使用 spring boot maven 进行构建 【0】文件结构如下&#xff1a; 【1】pom.xml 如下&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.o…

object面试题

equals方法 public class Demo {public static void main(String[] args) {String s1 "abc";StringBuilder sb new StringBuilder("abc");//System.out.println(sb.append("a"));//s1是字符串,则equals为字符串比较内容,// 由于比较对象不为字…

Jodd - Java界的瑞士军刀轻量级工具包

转载自 Jodd - Java界的瑞士军刀轻量级工具包&#xff01; Jodd介绍 Jodd是对于Java开发更便捷的开源迷你框架&#xff0c;包含工具类、实用功能的集合&#xff0c;总包体积不到1.7M。 Jodd构建于通用场景使开发变得简单&#xff0c;但Jodd并不简单&#xff01;它能让你把事情做…

spring boot 入门荔枝

【0】README spring boot 的4个核心功能介绍&#xff1a; 1. 自动配置&#xff1a; 无需 java配置或 xml配置&#xff0c;spring boot 会自动配置bean &#xff1b; 2. 起步依赖 &#xff1a; 为项目提供依赖管理&#xff0c;特别是解决了 各个 依赖jar 包的兼容性问题&…

基本数据类型与字符串的转换

基本数据类型与字符串的转换 1.字符串转化成其他类型 口诀:需要转成什么类型就用什么类型的包装类调用方法 byte Byte short Short int Integer long Long char Character float Float double Double boolean Boolean2.其他类型转…

Tomcat Get请求的巨坑

转载自 Java程序员注意&#xff1a;Tomcat Get请求的巨坑&#xff01; Tomcat8.5&#xff0c;当Get请求中包含了未经编码的中文字符时&#xff0c;会报以下错误&#xff0c;请求未到应用程序在Tomcat层就被拦截了。 Tomcat报错&#xff1a; java.lang.IllegalArgumentExceptio…

spring boot actuator 入门荔枝

1.创建maven 项目&#xff0c; 通过 http://start.spring.io/ 构建项目结构 2. 3个核心文件内容 ReadinglistApplicatoin.java package com.tangrong;import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplicat…

BigDecimal习题

BigDecimal习题 1.定义一个double类型的数组 double[] array{1.2, 0.6, 0.01, 3.2, 5.56, 7.21}; 2.使用BigDecimal求数组中元素的平均值&#xff0c;保留2位小数(四舍五入) 注意&#xff1a;每一个元素都需要封装为BigDecimal对象&#xff0c;才能进行运算&#xff0c;运算的…

Spring Boot 发布 jar 包转为 war 包秘籍。

转载自 Spring Boot 发布 jar 包转为 war 包秘籍。Spring Boot是支持发布jar包和war的&#xff0c;但它推荐的是使用jar形式发布。使用jar包比较方便&#xff0c;但如果是频繁修改更新的项目&#xff0c;需要打补丁包&#xff0c;那这么大的jar包上传都是问题。所以&#xff0c…

java的几种对象(PO,VO,DAO,BO,POJO)解释

本文转自&#xff1a; http://blog.csdn.net/bzhxuexi/article/details/8227808 Java的几种对象(PO,VO,DAO,BO,POJO)解释 一、PO:persistant object 持久对象,可以看成是与数据库中的表相映射的java对象。最简单的PO就是对应数据库中某个表中的一条记录&#xff0c;多个记录…

Redis 的 4 大法宝,2018 必学中间件

转载自 Redis 的 4 大法宝&#xff0c;2018 必学中间件&#xff01;Redis是什么&#xff1f;全称&#xff1a;REmote DIctionary ServerRedis是一种key-value形式的NoSQL内存数据库&#xff0c;由ANSI C编写&#xff0c;遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、…

数据交换方法

数据交换方法 一.定义三方变量 【代码实现常用】 int a9; int b10;//定义第三方变量 int tempa; ab; btemp;System.out.println("a"a);//a10 System.out.println("b"b);//b9二.基本位运算&#xff08;^&#xff09; 概念&#xff1a; 参加运算的两个数据…

高级 Java 必须突破的 10 个知识点

转载自 高级 Java 必须突破的 10 个知识点&#xff01; 工作多少年了&#xff0c;还在传统公司写if / for 等简单的代码&#xff1f;那你就真的要被社会淘汰了&#xff0c;工作多年其实你与初级工程师又有多少区别呢&#xff1f;那么作为一个高级Java攻城狮需要突破哪些知识点呢…

java动态代理和cglib动态代理

本文转自&#xff1a; http://blog.csdn.net/leon709/article/details/9529307 动态代理应用广泛&#xff0c;spring&#xff0c;Struts等框架很多功能是通过动态代理&#xff0c;或者进一步封装来实现的。 常见的动态代理模式实现有Java API提供的动态代理和第三方开源类库CG…

排名前 16 的 Java 工具类

转载自 干货&#xff1a;排名前 16 的 Java 工具类&#xff01;在Java中&#xff0c;工具类定义了一组公共方法&#xff0c;这篇文章将介绍Java中使用最频繁及最通用的Java工具类。以下工具类、方法按使用流行度排名&#xff0c;参考数据来源于Github上随机选取的5万个开源项目…

匿名内部类与Lambda表达式习题

匿名内部类与Lambda表达式习题 1.写一个函数式接口 public Operation{ public int calc(int a,int b); } 在测试类中写一个method方法&#xff0c;参数为Operation和a,b public static void method(Operation op) int result op.calc(a,b); System.out.println(result); } 在…

MySQL 调优/优化的 101 个建议!

转载自 MySQL 调优/优化的 101 个建议&#xff01; MySQL是一个强大的开源数据库。随着MySQL上的应用越来越多&#xff0c;MySQL逐渐遇到了瓶颈。这里提供 101 条优化 MySQL 的建议。有些技巧适合特定的安装环境&#xff0c;但是思路是相通的。我已经将它们分成了几类以帮助你理…