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 ...
随机推荐
- How to suppress 'Maybe this is program method' warnings from ProGuard
11down votefavorite 2 I'm using ProGuard with my Android application and I'm running getting the war ...
- 地形系统lod
参考其他引擎,地形有近到远进行越来越深的lod,基本完成 下面是u3d的,觉得原理应该是一样的
- iOS :ViewDidAppear
进入一个 UIViewController 会调用它的三个方法,分别是 viewDidLoad, viewWillAppear, viewDidAppear. 如每个方法的名字一样,在不同的方法中要处 ...
- fedora26 编译内核出现Can't use 'defined(@array)' 错误
cd /kernel/ vim timeconst.pl 把373行中的if (!defined(@val)) { 改为if (!@val) {
- 简要介绍DES、RSA MD5 sha1 四种加密算法的优缺点,以及使用场合
美国数据加密标准(DES)是对称密码算法,就是加密密钥能够从解密密钥中推算出来,反过来也成立.密钥较短,加密处理简单,加解密速度快,适用于加密大量数据的场合.RSA是非对称算法,加密密钥和解密密钥是不 ...
- Python 程序员都会喜欢的 6 个库
在编程时,小挫折可能与大难题一样令人痛苦.没人希望在费劲心思之后,只是做到弹出消息窗口或是快速写入数据库.因此,程序员都会喜欢那些能够快速处理这些问题,同时长远来看也很健壮的解决方案. 下面这6个Py ...
- linux 实时查看Tomcat日志信息
cd /../tomcat/logs 进入tomcat/logs/文件夹下 # tail -f catalina.out
- c++浅拷贝和深拷贝---14
原创博文,转载请标明出处--周学伟http://www.cnblogs.com/zxouxuewei/ 1.什么是拷贝构造函数: 拷贝构造函数,又称复制构造函数,是一种特殊的构造函数,它由编译器调用来 ...
- 解决Android 6.0(api 23) SDK,不再提供org.apache.http.*
Eclipse 解决办法 libs中加入 org.apache.http.legacy.jar 上面的jar包在:**\android-sdk\platforms\android-23\optiona ...
- 不用数据线连接到Android手机进行调试
这两天USB线丢了,老是找同事借也不方便,于是就网上找各种方法,这里总结个最简单的,当然你的手机需要root: 1 要打开WIFI,手机要和电脑在同一局域网内,这个你可以使用你的开发机共享wifi即可 ...