java基础五

继承

1. 继承含义

在面向对象编程中,可以通过扩展一个已有的类,并继承该类的属性和行为,来创建一个新的类,这种方式称为继承(inheritance).

2. 继承的优点

A.代码的可重用性

B.子类可以扩展父类的属性和方法

C.父类的属性和方法可用于子类

D.设计应用程序变得更加简单

 

3.类与类的关系: 

   a. has—a(组合关系)

       b. is—a(继承关系)

4. Java中继承的实现(关键字:extends)

  关键字extends出现在类声明时的类名后,extends后面跟着的是要继承的类的名称。

例如:public class Student(子类) extends Students(父类){}

5. 继承具有单根性和传递性

6. 所有类的根类Object(基类,超类)

public class Students extends Object{

}

7. 方法重写(方法重写出现在子类中,子类重写父类的方法,构造方法不能被继承)

A.方法重写含义:子类可以重写从父类继承的方法,从而允许子类添加或者改变父类中方法的行为。

B.子类重写父类需遵循的规则:

a. 子类的方法的方法名,返回值类型,参数列表都必须与父类中的相同。

b. 子类的访问修饰符必须不小于父类中的访问修饰符。(子类中的访问修饰不能比父类中的更严格)

c. 子类中重写的异常不能抛出比父类更多的异常。

8. super关键字

A.子类用关键字super来调用父类中重写的方法(super指代的是父类对象)

B.使用super调用父类的构造器,如果构造器没有使用super关键字,那么编译器会自动添加一个无参的super()来调用父类构造器

9. final关键字

a.final变量不能被改变

b.final类不能被继承

c.final方法不能再被重写

10. 封装

A.含义:封装是使类中的成员变量都是private,并提供public方法访问这些成员变量的技术。

B.封装使用getter,setter

C.封装优点:

   a.类的成员变量可以成为只读或只写

   b.类可以对存储在其它成员变量中的内容有一个整体的控制

   c.类的用户不需要知道类是如何存储数据的

内部类

内部类的特点

  1. 独立的class文件
  2. 同样需要编译
  3. 同样可以产生对象

静态内部类

定义方法: class Outer{

     static class Inner{

    //静态内部类不能访问到外部的成员,除非外部成员也是静态成员

}

}

静态内部类创建对象:a.用外部类. b.导入内部类所在的包 c.用全限定名

成员内部类

定义方法:class Outer{

     class Inner{

   //成员内部类可以访问到外部的成员

}

}

成员内部类创建对象:Outer outer = new Outer();

                 Outer.Inner inner = outer.new Inner();

局部内部类:只能在方法内部中使用

定义方法:class Outer{

         Void fd(){

           class Inner{

    //局部内部类

}

}

new Inner().fd();

}

匿名内部类:没有名字

形式定义:new 类或接口的名字(){

       //匿名内部类的主体

}

包装类

针对于原生数据类型的包装。所有的包装类(8 个)都位于java.lang 包下。

Java 中的 8 个包装类分别是:Byte,Short, Integer, Long, Float, Double,Character, Boolean。

他们的使用方式都是一样的,可以实现原生数据类型与包装类型的双向转换。

多线程

当一个程序运行时,内部可能包含了多个顺序执行流,每个顺序执行流就是一个线程。

  主要以下几个优点

  • 线程之间很容易实现共享内存
  • 创建线程代价较小
  • Java语言内置多线程功能支持
创建线程通过以下两种方法创建 Thread 对象:
声明一个 Thread 类的子类,并覆盖 run() 方法。 class mythread extends Thread {public void run( ) {/* 覆盖该方法*/ }}
声明一个实现 Runnable 接口的类,并实现 run() 方法。 class mythread implements Runnable{public void run( ) {/* 实现该方法*/ }}

 

线程的通信
Java为了避免轮询检测,通过wait()、notify()和notifyAll()方法实现进程内通信的机制。
wait():告诉调用线程放弃监控器进入等待模式直到其他线程进入同一监控器并调用notify()方法。
notify():唤醒在此同步器上等待的单个线程
notifyAll():唤醒在此同步器上等待的所有线程
 
线程池
线程池在系统启动时就创建大量空闲的线程,程序将一个Runnable对象传给线程池,线程池就会启动一个线程来执行该对象的run方法,当run方法执行结束后该线程不会死亡,而是再次返回线程池中称为空闲状态的,等待执行下一个Runnable对象的run方法。
使用线程池来执行线程任务的步骤如下:
  • 调用Executors类的静态工厂方法创建一个ExecutorService对象,该对象代表一个线程池。
  • 创建Runnable实现类或Callable实现类的实例,作为线程执行任务。
  • 调用ExecutorService对象的submit方法提交Runnable实例或Callable实例。
  • 当不想提交任何任务时调用ExecutorService对象的shutdown方法来关闭线程池。

转载于:https://www.cnblogs.com/hl201211/p/4473910.html

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

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

相关文章

Mac OS X 下Java开发环境配置

首先自己又装的jdk1.8版本目录:/Library/Java/JavaVirtualMachines/jdk1.8.0_91.jdk/Contents/Home待添加。。。转载于:https://blog.51cto.com/jiyanle/1790537

mysql emoji表情_让MySQL支持Emoji表情 mysql 5.6

最近在做微信相关的项目,其中MySQL 要存储emoji表情,因此发现我们常用的utf8 字符集根本无法存储表情。网上有不少替代方案。本人还是采用了修改MySQL字符集的方案简单快捷。首先将我们数据库默认字符集由utf8 更改为utf8mb4,对应的表默认字符…

高效开发iOS系列 -- 那些不为人知的KVC

我的简书地址:http://www.jianshu.com/p/a6a0abac1c4a valueForKeyPath 本篇来解说一下那些不为人知,也常常被忽略掉,而且非常有用的KVC干货小技巧 获取数组里的,最大、最小、平均、求和 NSArray *array ["1","3",2,9.5…

::selection

改变浏览器文字选中背景 ::selection CSS的伪类选择器 只有一小部分CSS属性可以用于::selection选择器: color, background-color, cursor, outline, text-decoration, text-emphasis-color和text-shadow。 要特别注意的是,background-image会如同其他属…

B00013 字符串哈希函数

哈希算法将任意长度的二进制值映射为较短的固定长度的二进制值,这个小的二进制值称为哈希值。 哈希函数用途广泛,这个程序给出了绝大多数常用的哈希函数。源程序来自:哈希算法_百度百科。 程序员可以根据自己的需要取用这些代码。 需要注意的…

*hdu5632Rikka with Array

$n \leq 10^300$&#xff0c;问所有$i<j$且$f_i>f_j$的$(i,j),1 \leq i \leq n,1 \leq j \leq n$数量。对某个数取模。 $f(a,b,0/1/2/3)$--前$a$位&#xff0c;两个数相差$b$个1&#xff0c;$b$可以为负数&#xff0c;然后四种情况&#xff1a;$i<j<n$&#xff0c;…

java正则表达式提取字符串中的数字

http://stackoverflow.com/questions/2367381/extract-numbers-from-a-string-java Pattern p Pattern.compile(\\d); 使用这个会有空字符串出现 Pattern p Pattern.compile("-?\\d"); 这是OK,转载于:https://www.cnblogs.com/pengxinglove/p/4476634.html

python3中的正则模块

本文引至: 正则模块 与正则最相关的应该算是字符串, 但是,在内置的py的str类型中, 并没有内置的正则方法. 我们可以看一下str的基本方法:我觉得最有用的,应该算find,len,split,join 这4个方法了. 但对于字符串操作来说, 这简直too too simple. 所以, py提供了我们一个Re 模块, …

wamserver怎么把mysql找回来_将php连接wampserver自带的MySQL数据库 所遇到各种问题解决办法...

将php连接到MySQL数据库的方法有很多&#xff0c;在这里我使用的是mysqli_connect方法&#xff0c;此博客所解答的问题汇总&#xff1a;1.wampserver服务器离线但图标为正常绿&#xff1b;2.wampserver 2/3服务正常运行&#xff0c;3个服务分别是哪些&#xff1f;3.wampserver …

Oracle11.2.0.4 windows32+64bit opatch工具 11.2.0.0 百度云盘下载

2016年6月3日最新11GR2版本11.2.0.0的opatch工具&#xff08;版本号&#xff1a;P6880880&#xff09;FOR Windows 3264bit环境 版本&#xff1a;Windows 32BIT 11G R2版本11.2.0.0 opatch工具 p6880880下载地址 地址&#xff1a;链接&#xff1a;http://pan.baidu.com/s/1cqP6…

Linux防火墙iptables基础详解

一、前言防火墙&#xff0c;其实说白了讲&#xff0c;就是用于实现Linux下访问控制的功能的&#xff0c;它分为硬件的或者软件的防火墙两种。无论是在哪个网络中&#xff0c;防火墙工作的地方一定是在网络的边缘。而我们的任务就是需要去定义到底防火墙如何工作&#xff0c;这就…

问题总结2015/05/05

1、第三方提供的库不能使用。 调查方法&#xff1a;差分编译&#xff0c;对比连接后和编译后的差分情况&#xff1b;Debug单步调试&#xff0c;定位出错代码&#xff1b;由于是第三方库不能使用的原因&#xff0c;反编译辅助调查。 调查结果&#xff1a;本机编译后的R文件中的资…

php mysql备份还原类_PHP实现MYSQL备份还原

/*** mysql备份*/classMysqlBackup {function __construct($filename, $config) {$this->setFile($filename);$this->con($config);}/*** 输出信息*/private function info($code, $msg) {$json json_encode(array(code > $code, msg > $msg),JSON_UNESCAPED_UNIC…

一个屌丝程序猿的人生(二十七)

“林萧&#xff0c;妈回去了。你一个人在北京照顾好自己&#xff0c;缺钱了给我打电话。”韩霞放下车窗&#xff0c;面色担忧的跟林萧告别。方才来宋刚学校之前&#xff0c;武达浪已经独自一人离开&#xff0c;如今事情已经办妥&#xff0c;韩霞也要赶回老家去了。 “放心吧&am…

采用HttpModules来重写URLS

首先写一个处理URLs重写的类&#xff0c;并且这个类必须继承IHttpHandler接口&#xff0c;以博客园的程序为例&#xff1a; public class UrlReWriteModule : System.Web.IHttpModule { public void Init(HttpApplication context) { context.BeginRequest new EventHandler(c…

js的下拉刷新和上拉加载,基于iScroll v4.2.5

html部分 <div id"wrapper" style"height: 100%"><div id"scroller"><div id"pullDown"></div><ul id"thelist"><li>我是三冰 1</li><li>我是三冰 2</li><li>…

mysql gtid坑_通过mysqlbinlog --skip-gtids恢复后再备份可能造成的坑

版本[rootuz22199 backup]# innobackupex --versioninnobackupex version 2.4.8 Linux (x86_64) (revision id: 97330f7)[rootuz22199 backup]# mysql -e"select version"------------| version |------------| 5.7.18-log |------------源库表结构与数据rootmysqldb…

SqlHelper模板

在实际开发中&#xff0c;我们不会直接使用拼写SQL语句的方法进行数据库操作&#xff0c;而是使用参数化的方法进行数据库操作&#xff0c;这样做的好处很多&#xff0c;不仅提高了程序的健壮性&#xff0c;同时也避免的SQL注入的问题。在这里&#xff0c;笔者为初学者提供一个…

164. Maximum Gap

题目&#xff1a;Given an unsorted array, find the maximum difference between the successive elements in its sorted form. Try to solve it in linear time/space. Return 0 if the array contains less than 2 elements. You may assume all elements in the array are…

java声明和初始化数组_Java 中初始化数组

数组是一种有用的数据类型&#xff0c;用于管理在连续内存位置中建模最好的集合元素。下面是如何有效地使用它们。-- Chris Hermansen&#xff08;作者&#xff09;有使用 C 或者 FORTRAN 语言编程经验的人会对数组的概念很熟悉。它们基本上是一个连续的内存块&#xff0c;其中…