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 ...
随机推荐
- Python 获取CentOS主机信息
Python 获取主机IP地址 #!/usr/bin/env python #coding:utf-8 import os ip=os.popen("ifconfig eth0|grep ' ...
- 加密算法(对称加密)AES、DES (非对称加密)RSA、DSA
目前主流的加密方式有:(对称加密)AES.DES (非对称加密)RSA.DSA
- Mac/win eclipse genymotion 插件下载地址
eclipse -->new install --> 填写该地址 (目前最新的地址) https://dl.genymotion.com/eclipse/
- [转]好文章:Android的AlertDialog详解
refer:http://www.2cto.com/kf/201205/131876.html AlertDialog的构造方法全部是Protected的,所以不能直接通过new一个AlertDial ...
- SQLServer查看存储过程的方法
使用 sp_helptext 查看存储过程的定义 在对象资源管理器中,连接到 数据库引擎实例,再展开该实例. 在工具栏上,单击“新建查询”. 在查询窗口中,输入下列语句.更改数据库名称和存储过程名称以 ...
- Log4net用法(.config文件)
1.引用log4net.dll 2.在AssemblyInfo.cs中添加初始化: [assembly: log4net.Config.XmlConfigurator(ConfigFile = &qu ...
- Jquery/js submit()无法提交问题
有朋友可能会直接利用js或jquery来提交数据而不是使用表单直接提交了,小编来给大家介绍小编碰到的一个问题就是 submit()无法提交,下面我们来看解决办法与原因分析. jquery无法提交 代 ...
- 图解Python深拷贝和浅拷贝
Python中,对象的赋值,拷贝(深/浅拷贝)之间是有差异的,如果使用的时候不注意,就可能产生意外的结果. 下面本文就通过简单的例子介绍一下这些概念之间的差别. 对象赋值 直接看一段代码: will ...
- ice服务初探
http://masterkey.iteye.com/blog/182975 http://blog.csdn.net/moxiaomomo/article/details/6773979 http: ...
- hibernate sqlite jdbctemplate 待研究
http://my.oschina.net/lldy/blog/39058 hibernate sqlite http://foru ...