java(3) 面向对象
1.super关键字
* 使用super关键字调用父类的成员变量和成员方法。具体格式:
super.成员变量
super.成员方法([参数1,参数2...]) * 使用super关键字调用父类的构造方法。具体格式:
super([参数1,参数2...]) * 通过super调用父类构造方法的代码必须位于子类构造方法的第一行,并且只能出现一次。 * 子类的构造方法中一定会调用父类的某个构造方法。如果没有指定调用父类的某个构造方法,在实例化子类对象时,会自动调用父类无参的构造方法。 2.final关键字
* final类 使用final来修饰的类叫作final类。final类通常功能是完整的,它们不能被继承。 * final方法 方法不可以被子类的方法重。final方法比非final方法要快,因为在编译的时候已经静态绑定了,不需要在运行时再动态绑定。 * final变量 经常和static关键字一起使用,作为常量。final变量只能赋值一次,是只读的。 * final 修饰数组或其他对象,则对象地址不可变,但内容还可变 --注:如想对final深入理解,需参考《Java初学者都必须理解的六大问题》 3.抽象类
* 抽象方法 它只有声明而没有具体的实现。声明格式为:abstract void fun();
* 抽象类 使用 abstract 关键字修饰的类为抽象类
--抽象方法必须为public或者protected(因为如果为private,则不能被子类继承,子类便无法实现该方法),缺省情况下默认为public
--抽象类不能用来创建对象
--抽象类同样可以拥有成员变量和普通的成员方法
--继承抽象类的子类,必须实现父类的抽象方法。如果子类没有实现父类的抽象方法,则必须将子类也定义为为abstract类 4.接口
*接口中的变量会被隐式地指定为public static final变量,并且只能是public static final变量
*接口中的方法会被隐式地指定为public abstract方法,并且只能是public abstract方法
*非抽象类遵循了某个接口,就必须实现该接口中的所有方法。对于遵循某个接口的抽象类,可以不实现该接口中的抽象方法 5.抽象类与接口区别
* http://www.cnblogs.com/felixzh/p/5938544.html
* http://www.cnblogs.com/beanmoon/archive/2012/12/06/2805221.html 6.多态
* 在同一个方法中,由于参数类型的不同而导致执行效果各异的现象就是多态 * 使用一个父类类型的变量来引用一个子类类型的对象,根据被引用子类对象的不同,得到不同的效果。例如: //定义接口 Animal
interface Animal{
void shout(); //定义抽象shout()方法
} //定义 Cat 类 实现Animal接口
class Cat implement Animal{
//实现shout()方法
public void shout(){
System.out.println("喵喵.....");
}
} //定义 Dog 类实现Animal接口
class Dog implement Animal{
//实现shout()方法
public void shout(){
System.out.println("汪汪.....");
} } //定义测试类
public class ExampleTest(){
public static void main(String[] args){
Animal an1 = new Cat(); //创建Cat对象,使用Animal类型变量引用
Animal an2 = new Dog(); //创建Cat对象,使用Animal类型变量引用
animalShout(an1); //调用animalShout(),将an1作为参数传入
animalShout(an2); //调用animalShout(),将an2作为参数传入
} //定义静态的animalShout()方法,接收一个Animal类型参数
public static void animalShout(Animal an){
an.shout();
}
} * 将子类对象当作父类使用时不需要任何显示地声明,但不能通过父类变量去调用子类中的某些方法(子类中存在,父类中不存在的方法)。 //定义接口 Animal
interface Animal{
void shout(); //定义抽象shout()方法
} //定义 Cat 类 实现Animal接口
class Cat implement Animal{
//实现shout()方法
public void shout(){
System.out.println("喵喵.....");
} //定义sleep()方法
public void sleep(){
System.out.println("猫睡觉.....");
} } //定义测试类
public class ExampleTest(){
public static void main(String[] args){
Cat cat = new Cat(); //创建Cat对象,使用Animal类型变量引用
animalShout(cat); //调用animalShout(),将 cat 作为参数传入
} //定义静态的animalShout()方法,接收一个Animal类型参数
public static void animalShout(Animal an){
an.shout();
an.sleep();
}
} --当编译器检查到代码an.sleep()时,发现Animal类中没有定义sleep()方法而报错。由于传入的对象是Cat类型,在Cat类中定义了sleep()方法,通过Cat类型的对象调用sleep()方法是可行的,
因此可以在animalShout()方法中将 Animal类型的变量强转为Cat类型。代码具体修改为: //定义静态的animalShout()方法,接收一个Animal类型参数
public static void animalShout(Animal an){
Cat cat = (Cat) animal; //将 Animal 类型的变量强转为Cat类型
cat.shout();
cat.sleep();
}
java(3) 面向对象的更多相关文章
- java的面向对象
Java是1995年诞生.前身oak,后来改名为java. 面向对象的编程思想:对象是万事万物. 对象是由两部分组成的:属性和方法 1:属性是对象的静态特性(名词) 2:方法是对象的动态特性(动词) ...
- (Java)《head first java》值得Java或面向对象基础的新手看。
看完这本书后本人收获良多. 内容对Java以及面向对象的入门者非常友好. 抽象的内容惯用图解的方法来剖析,通俗易懂 之前看C#入门经典的面向对象时,依然浓浓的一头雾水. (1)很不解为何实例化要写成A ...
- java学习面向对象之异常之一
一.异常的概述: 什么是异常?在我们编写java程序的时候,会出现一些问题,比如内存溢出啊或者数组索引超出最大索引啊,这些编程当中出现的这些个问题就是异常.但是异常也分为可以处理的和不可以处理的.比如 ...
- Java之面向对象相关问题集
面向对象的特征有哪些方面 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不打算了解所有问题,而仅仅是选择当中的一部分,临时不用部分细节. 抽 ...
- Java与面向对象
一.面向过程的思想和面向对象的思想 面向对象和面向过程的思想有着本质上的区别, 作为面向对象的思维来说,当你拿到一个问题时,你分析这个问题不再是第一步先做什么,第二步再做什么,这是面向过程的思维,你应 ...
- java基础面向对象之类与对象
java基础面向对象之类与对象 2017-01-14 1.面向对象的基本概念 以一种组建化的形式进行代码设计 1)在面向对象程序设计中包含有如下几种特性 •封装性:保护内部结构的安全性 •继承性:在已 ...
- Java与面向对象之随感(2)
我们知道Java语言的一大特性就是相比于c语言和c++语言,其更加安全.那么Java安全性的一个重要保证就是它取消了指针,并且坚决反对数组的出界(c++对当数组超出上限但是还进行读写操作时允许的!), ...
- 第二十七节:Java基础面向对象-静态,单例模式,继承详情知识点
前言 Java基础面向对象-静态,单例模式,继承详情知识点.静态-static关键字,static变量,静态代码块,代码块(不加静态),对象创建过程,单例模式,继承. 静态-static关键字 // ...
- Java的面向对象(初涉)
Java的面向对象(初涉) 面向对象的分析根据抽象关键的问题域来分解系统.面向对象的设计是一种提供符号设计系统的面向对象的实现过程,它用非常接近实际领域术语的方法把系统构造成"现实世界&qu ...
- JAVA(一)JAVA基础/面向对象基础/高级面向对象
成鹏致远 | lcw.cnblog.com |2014-01-23 JAVA基础 1.开发环境搭建 JAVA程序的执行流程 JAVA命令->要使用一个*.class文件(类文件)->通过c ...
随机推荐
- TI单节电量计基本介绍及常见问题解答
电量计(gas gauge /fuel gauge)是用来计量显示电池电量,通常包括mAh剩余容量(RM),满充容量(FCC),百分比容量(SOC),电压,电流,温度等,部分电量计还包含放空,充满时间 ...
- 绝对震撼 10个实用的jQuery/HTML5插件
在HTML5的世界里,我们见证了无数的特效奇迹,但很多特效我们很难在网页中应用,今天我们要分享10款效果震撼但是又比较实用的jQuery/HTML5插件,希望这些项目在应用的过程中也能给你带来设计灵感 ...
- Dependency Scopes(maven)
Dependency scope 是用来限制Dependency的作用范围的, 影响maven项目在各个生命周期时导入的package的状态. 自从2.0.9后,新增了1种,现在有了6种scope: ...
- linux下配置SS5(SOCK5)代理服务
安装sock5所需依赖开发库: # yum install pam-devel openldap-devel openssl-devel 下载并解压安装sock5 # wget http://down ...
- 我的Oracle控制台创建数据库的工具
Oracle windows 11.2.0.4 在控制台cmd下的创建工具,不依赖于服务和监听 工具及下载:Oracle控制台工具 注意:其中的 “seeddatabase.gbk.7z”文件为从Or ...
- 让 Oracle 11g 32位运作在64位 Windows 上
并非不能运行. 本人安装版未曾尝试,但绿色版倒是运行成功了. 很简单:注册表的位置发生了变化而已! 默认(32位.64位),oracle会读取以下注册表的位置: [HKEY_LOCAL_MA ...
- 分析技术在PMP中的应用
Analytical Techniques, 根据可能的项目或者环境变量变化以及它们与其他变量之间的关系,对潜在后果进行评估,分析和预测的各种技术. 4.4.2.2 监控项目工作: 分析技术 包括: ...
- QT编译错误:Project ERROR: This example requires Qt to be configured with -opengl desktop
学习QT场景视图,对一个Boxes的例子比较感兴趣,于是去编译学习,结果编译不能通过(使用的是QT5.12): Project ERROR: This example requires Qt to b ...
- Thinkphp 模板中使用自定义函数的方法
1.number_format {$number|number_format=2} 千分位,保留两位小数 2.round {$number|round=2} 四舍五入保留两位小数
- ASCII码与16进制的互相转换(表)
所谓的ASCII和16进制都只是概念上的东西,在计算机中通通是二进制 转换应该是输出的转换,同样是一个数,在计算机内存中表示是一样的,只是输出不一样ASCII是针对字符的编码,几乎是键盘上的字符的编码 ...