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) 面向对象的更多相关文章

  1. java的面向对象

    Java是1995年诞生.前身oak,后来改名为java. 面向对象的编程思想:对象是万事万物. 对象是由两部分组成的:属性和方法 1:属性是对象的静态特性(名词) 2:方法是对象的动态特性(动词) ...

  2. (Java)《head first java》值得Java或面向对象基础的新手看。

    看完这本书后本人收获良多. 内容对Java以及面向对象的入门者非常友好. 抽象的内容惯用图解的方法来剖析,通俗易懂 之前看C#入门经典的面向对象时,依然浓浓的一头雾水. (1)很不解为何实例化要写成A ...

  3. java学习面向对象之异常之一

    一.异常的概述: 什么是异常?在我们编写java程序的时候,会出现一些问题,比如内存溢出啊或者数组索引超出最大索引啊,这些编程当中出现的这些个问题就是异常.但是异常也分为可以处理的和不可以处理的.比如 ...

  4. Java之面向对象相关问题集

    面向对象的特征有哪些方面  1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不打算了解所有问题,而仅仅是选择当中的一部分,临时不用部分细节. 抽 ...

  5. Java与面向对象

    一.面向过程的思想和面向对象的思想 面向对象和面向过程的思想有着本质上的区别, 作为面向对象的思维来说,当你拿到一个问题时,你分析这个问题不再是第一步先做什么,第二步再做什么,这是面向过程的思维,你应 ...

  6. java基础面向对象之类与对象

    java基础面向对象之类与对象 2017-01-14 1.面向对象的基本概念 以一种组建化的形式进行代码设计 1)在面向对象程序设计中包含有如下几种特性 •封装性:保护内部结构的安全性 •继承性:在已 ...

  7. Java与面向对象之随感(2)

    我们知道Java语言的一大特性就是相比于c语言和c++语言,其更加安全.那么Java安全性的一个重要保证就是它取消了指针,并且坚决反对数组的出界(c++对当数组超出上限但是还进行读写操作时允许的!), ...

  8. 第二十七节:Java基础面向对象-静态,单例模式,继承详情知识点

    前言 Java基础面向对象-静态,单例模式,继承详情知识点.静态-static关键字,static变量,静态代码块,代码块(不加静态),对象创建过程,单例模式,继承. 静态-static关键字 // ...

  9. Java的面向对象(初涉)

    Java的面向对象(初涉) 面向对象的分析根据抽象关键的问题域来分解系统.面向对象的设计是一种提供符号设计系统的面向对象的实现过程,它用非常接近实际领域术语的方法把系统构造成"现实世界&qu ...

  10. JAVA(一)JAVA基础/面向对象基础/高级面向对象

    成鹏致远 | lcw.cnblog.com |2014-01-23 JAVA基础 1.开发环境搭建 JAVA程序的执行流程 JAVA命令->要使用一个*.class文件(类文件)->通过c ...

随机推荐

  1. python pip 更换国内安装源(windows)

    1.点击此电脑,在最上面的的文件夹窗口输入 : %APPDATA% 2.按回车跳转到以下目录,新建pip文件夹 3.创建pip.ini文件 4.打开文件夹,输入以下内容,关闭即可(注意:源镜像可替换) ...

  2. shiro+redis多次调用doReadSession方法的解决方案

    Web 项目使用shiro,针对这个问题可以重写DefaultWebSessionManager,将缓存数据存放到request中,这样可以保证每次请求(可能会多次调用doReadSession方法) ...

  3. 有术:DIY代理服务器

    FQ有术:DIY代理服务器 公司HTTP代理穿透+手機ShadowSocks+SSH翻牆 利用SSH代理爬墙 http://bestvpnchina.net/

  4. JavaScript高速掌握

    .document.write(""); 输出语句 .JS中的凝视为//或/* */ .传统的HTML文档顺序是:document->html->(head,body) ...

  5. XCODE 添加不同IOS版本的模拟器

    一.XCode->Preferences->Downloads, 可以下载模拟器.

  6. 限制 Text Field 输入的内容类型:只允许输入数字

    效果如下: ViewController.h #import <UIKit/UIKit.h> @interface ViewController : UIViewController< ...

  7. PS1-4

    export PS2="continue->" cat ps4.sh export PS4='$0.$LINENO+ ' set -x echo "PS4 demo ...

  8. Linux 系统磁盘满处理方法

    1.使用find命令,找出占用空间较大的文件 find / -type f -size +5G   —找到大于5G的文件,有work权限的情况下可以使用 find . -type f -size +1 ...

  9. 详解ABBYY FineReader 12内置的自动化任务

    要使用ABBYY FineReader处理文档,需要完成四个步骤:获取文档图像>识别该文档>验证结果>以选取的格式保存结果.如果需要再三地重复相同的步骤,您可以使用ABBYY Fin ...

  10. SpringMVC使用@ResponseBody时返回json的日期格式及可能产生的问题

    http://blog.csdn.net/z69183787/article/details/40375831 遇到的问题: 1 条件: 1.1.表单里有两个时间参数,都是作为隐藏项随表单一起提交: ...